当前位置 : 主页 > 编程语言 > c语言 >

.net – ImmutableObject属性提供了哪些好处?

来源:互联网 收集:自由互联 发布时间:2021-06-24
我正在测试ImmutableObjectAttribute属性只是为了好奇,看看我是否可以获得一些应用它的好处,或者它是否仅仅用于语义修饰…… ImmutableObjectAttribute Class Specifies that an object has no subproperties c
我正在测试ImmutableObjectAttribute属性只是为了好奇,看看我是否可以获得一些应用它的好处,或者它是否仅仅用于语义修饰……

> ImmutableObjectAttribute Class

Specifies that an object has no subproperties capable of being edited.

所以我有这门课:

<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属性只是一个装饰属性吗?

为什么存在这个属性呢?我找不到任何标记具有此属性的类的beneffit它不能确保成员实际上是不可变的,或者至少是.Net理解为不可变的(你知道,就像String在.Net中不是真正不可变的).

从 ImmutableObjectAttribute Class文档:

This attribute is typically used in the Properties window to determine
whether to render an expandable object as read-only. As such, this
property is used only at design time.

…是的,这只是装饰.

网友评论