gpt4 book ai didi

vb.net - 具有公共(public) getter 和私有(private) setter 的 Auto Property

转载 作者:行者123 更新时间:2023-12-03 00:54:56 24 4
gpt4 key购买 nike

注意:这不是VB.NET equivalent of C# property shorthand?重复这个问题是关于如何对 VB 自动属性的 getter 和 setter 拥有不同的访问权限;例如公共(public) getter 和私有(private) setter这个问题是关于自动属性的语法(并且没有提到这个问题)。

<小时/>

我正在尝试将自动属性(public getter 和 private setter)从 C# 转换为 VB.NET。

但是转换后 VB.NET 维护一个私有(private)字段。

C#代码

class DemoViewModel
{
DemoViewModel (){ AddCommand = new RelayCommand(); }

public ICommand AddCommand {get;private set;}
}

来自 code converter 的 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

VB.NET 代码生成私有(private)支持字段。

是否可以在源代码(如 C#)中删除此后字段?怎么办?

如果没有这个功能,VB.NET 源代码将会有很多这样的冗余。

最佳答案

使用 VB.NET,如果您希望为 Get 和 Set 过程指定不同的可访问性,则您不能使用自动实现的属性,而必须使用标准,或扩展的属性语法。

阅读 MSDN:https://learn.microsoft.com/en-us/dotnet/visual-basic/programming-guide/language-features/procedures/auto-implemented-properties

<小时/>

如果 getter 和 setter 具有相同的可访问性,例如两者都是公共(public),那么您可以使用自动属性语法,例如:

Public Property Prop2 As String = "Empty"

关于vb.net - 具有公共(public) getter 和私有(private) setter 的 Auto Property,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14085180/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com