注:这是不是重复的VB.NET相当于C#属性的简写?.这个问题是关于如何在VB自动属性的getter和setter上拥有不同的访问权限 ; 例如公共吸气剂和私人二传手.那个问题是关于auto-property的语法(并没有提到这个问题).
我正在尝试将自动属性(公共 getter和私有 setter)从C#转换为VB.NET.
但转换后VB.NET正在维护一个私有字段.
C#代码
class DemoViewModel
{
DemoViewModel (){ AddCommand = new RelayCommand(); }
public ICommand AddCommand {get;private set;}
}
Run Code Online (Sandbox Code Playgroud)
VB.NET相当于从代码转换器是
Class DemoViewModel
Private Sub New()
AddCommand = New RelayCommand()
End Sub
Public Property AddCommand() As ICommand
Get
Return m_AddCommand
End Get
Private Set
m_AddCommand = Value
End Set
End Property
Private m_AddCommand As ICommand
End Class
Run Code Online (Sandbox Code Playgroud)
VB.NET代码生成私有后备字段.
是否有可能摆脱源代码中的这个后场(如c#)?怎么样?
没有这个功能,VB.NET源将有很多这样的冗余.
Ser*_*eyS 14
使用VB.NET,如果要为Get和Set过程指定不同的可访问性,则不能使用自动实现的属性,而必须使用标准或扩展的属性语法.
阅读MSDN:http://msdn.microsoft.com/en-us/library/dd293589.aspx
如果getter和setter 具有相同的可访问性,例如两者都是Public,则可以使用auto-property语法,例如:
Public Property Prop2 As String = "Empty"
Run Code Online (Sandbox Code Playgroud)
p3t*_*tch 10
在 VB.NET 中
Public ReadOnly Property Value As String
Run Code Online (Sandbox Code Playgroud)
然后要访问私有 setter,请在属性名称前使用下划线
Me._Value = "Fred"
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5900 次 |
| 最近记录: |