我只是出于好奇测试了
然后,当我在可变对象中应用了
这让我想到一个问题,答案似乎很显然,但我需要问一下:
ImmutableObjectAttribute
属性,想看看是否能从中获得一些好处或者它只是语义修饰...
指定对象没有可被编辑的子属性。
所以我有这个类:
<ImmutableObject(True)>
Public Class TestClass
<ImmutableObject(True)>
Public sb As StringBuilder
Public Sub New()
sb = New StringBuilder
End Sub
End Class
我已经使用以下代码进行测试:
Dim obj As New TestClass
obj.sb.Append("Hello")
obj.sb.Append(" ")
obj.sb.Append("World")
MsgBox(obj.sb.ToString)
然后,当我在可变对象中应用了
ImmutableObject
属性之后,我预期会看到某种编译器警告、运行时异常或者只是从StringBuilder
的内部字符串接收到意外值,但是没有发生任何事情,一切似乎都正常工作。这让我想到一个问题,答案似乎很显然,但我需要问一下:
ImmutableObject
属性只是一种装饰性属性吗?
DefaultValue
不提供或强制执行默认值,Range
不强制执行范围一样,它们是元数据,通常由其他东西来读取和处理。另外,字符串是不可变的。myString(x) = "x"c
是行不通的。 - Ňɏssa Pøngjǣrdenlarp