ReadOnly我应该在vb.net中使用私有集的属性或属性?

Ami*_*ail 8 .net c# vb.net properties

我喜欢.NET自动属性,在C#中readonly通过声明它的set部分就可以很容易地声明属性private:

public String Name{ get; private set; }
Run Code Online (Sandbox Code Playgroud)

但是当我在VB.NET中尝试这种方法时,我感到震惊的是它不支持这里提到的,我必须按如下方式编写它:

Private _Name as String
Public ReadOnly Property Name as String
   Get
      return _Name
   End Get
End Property
Run Code Online (Sandbox Code Playgroud)

要么:

Private _Name as String
Public Property Name as String
   Get
      return _Name
   End Get
   Private Set(value as String)
      _Name = value
   End Set
End Property
Run Code Online (Sandbox Code Playgroud)

这些声明之间有什么区别VB.NET,哪一个是首选,为什么?

编辑

哪一个会影响编译时间,运行时间或性能?

Gra*_*mas 6

在这种情况下ReadOnly,只有那些有权访问基础变量的人可以通过直接应用这种变化来改变基础价值(例如,同一类中的元素).在后一种情况下,Private Set- 这是相同的 - 类的范围内的元素可以更改基础值,但可以通过属性来实现.

哪一个是优选的是间接的:属性的一个优点是,您可以像方法一样,在应用更改时涉及进一步的实现(尽管应该避免副作用,例如,您可以'验证'并采取异常).如果在设置值时总是要做其他事情,那么这与设置值密切相关,您可以在此属性设置器中执行此操作,而不必在任何地方对该实现进行编码set.