这个问题是关于不同类型的VB属性声明语法创建的内容。但首先我想在某些上下文中引用C#。我对C#不是很有能力,但我看到我们可以写:
public string myString {get; set;}
该行与下面的行相同,后者具有显式声明的阻塞变量:
public string myString {
get { return m_myString; }
set { m_myString = value; }
}
private string m_myString;
现在转到VB,下面的VB和这篇帖子顶部的第一行C#相同吗?
Public Property myString() As String
或者我们必须按照以下方式编写所有内容:
Public Property myString() As String
Get
Return m_myString
End Get
Set
m_myString = Value
End Set
End Property
Private m_myString As String
这个问题实际上不是关于是否想要使用支持变量,而是关于声明属性的语法如何在VB中工作。
答案 0 :(得分:0)
是的,C#public string MyString { get; set; }
相当于VB.NET中的Public Property MyString() As String
。
注意,属性名称应该是上层驼峰案例,AKA Pascal案例。
答案 1 :(得分:0)
它们并不完全相同。 VB.Net为名为myString
的自动实现的属性_myString
生成隐藏的私有支持字段。这个例子将编译:
Public Property myString As String
Public Function Foo() As String
Return myString
End Function
Public Function _Foo() As String
Return _myString
End Function
在C#中尝试相同的操作。它没有编译。
public string myString { get; set; }
public string Foo()
{
return myString;
}
public string _Foo()
{
return _myString; //The name '_myString' does not exist in the current context
}
然后,您可以在C#中声明字段_myString
,但不能在VB.Net中声明。
<强>因此强>
Private _myString As String
Public Property myString As String
Get
Return _myString
End Get
Set
_myString = Value
End Set
End Property
<强> = 强>
Public Property myString As String
<强> = 强>
private string _myString;
public string myString
{
get { return _myString; }
set { _myString = value; }
}
!= (&lt;&gt; 为您提供VB.Net人员)
public string myString { get; set; }