0

这两个片段有什么区别?

Public Property UserName As String

Public Property User As String
    Get
        Return _User
    End Get
    Set(ByVal value As String)
        _User = value
    End Set
End Property

如果这是一个重复或愚蠢的问题,我很抱歉。我不习惯 VB.NET,我更习惯 C#。我正在尝试将其翻译成 C#,我没有犯错的余地。

4

4 回答 4

4

第一个(自动实现的属性)将自动为您创建支持字段,因此您不必_User像第二个示例中那样声明自己。

来自MSDN

当您声明一个自动实现的属性时,Visual Basic 会自动创建一个隐藏的私有字段,称为支持字段以包含该属性值。支持字段名称是自动实现的属性名称,前面带有下划线 (_)。例如,如果您声明一个名为 ID 的自动实现属性,则支持字段名为 _ID。

于 2012-08-29T14:11:16.513 回答
3

没有区别。第一个只是第二个的简短版本。

但是,如果您想限制 setter 或在属性中执行更多操作而不是获取/设置变量,则需要使用第二个版本。

所以它与(在 C# 中)相同

public string UserName { get; set; }

自动实现的属性 (Visual Basic)

自动实现的属性(C# 编程指南)

于 2012-08-29T14:11:19.463 回答
1

其中一个更短:)

在第一种情况下,它是一个自动实现的属性,与第二种情况执行相同的操作,只是您看不到或使用支持字段。

顺便说一句,C# 等价物是:

public string UserName { get; set; }
于 2012-08-29T14:10:51.903 回答
1

这只是自动实现属性的 VB 版本

所以 C# 等价物是:

public string UserName { get; set; }

请注意,VB 允许自动实现属性的默认值,而 C# 不允许 - 您需要在构造函数中将属性设置为默认值。

于 2012-08-29T14:10:59.053 回答