在VB中声明属性的两种方法 - 有什么区别?

时间:2012-08-29 14:09:22

标签: c# vb.net

这两个片段有什么区别?

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 个答案:

答案 0 :(得分:4)

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

来自MSDN

  

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

答案 1 :(得分:3)

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

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

所以它与(在C#中)

相同
public string UserName { get; set; }

Auto-Implemented Properties (Visual Basic)

Auto-Implemented Properties (C# Programming Guide)

答案 2 :(得分:1)

其中一个更短:)

在第一种情况下,它是一个自动实现的属性,与第二种情况完全相同,除了您无法查看或使用支持字段。

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

public string UserName { get; set; }

答案 3 :(得分:1)

这只是VB version of automatically implemented properties

所以C#的等价物是:

public string UserName { get; set; }

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