gpt4 book ai didi

c# - 为什么 VB.NET 属性的 setter 需要类型化参数,为什么是 ByVal?

转载 作者:可可西里 更新时间:2023-11-01 08:23:26 25 4
gpt4 key购买 nike

在 C# 中,属性的 setter value 关键字将自动与属性的类型相同。

例如,在C#中,value的类型是string

private string str = string.Empty;
public string MyText
{
get { return str; }
set { str = value; }
}

如果我们将此代码段转换为 VB.Net,我们会得到

Private str As String = String.Empty
Public Property MyText() As String
Get
Return str
End Get
Set(ByVal value As String)
str = value
End Set
End Property

问题

  1. 为什么 set 有这行 Set(ByVal value As String)?不应该值类型自动成为字符串。这样。

    Private str As String = String.Empty
    Public Property MyText() As String
    Get
    Return str
    End Get
    Set
    str = value
    End Set
    End Property

    那有什么用?

  2. 我无法将 BYVal 更改为 ByRef(我试过了,它给出了错误),那它又有什么用呢?

最佳答案

可以省略 (ByVal value As String) 部分。 Visual Studio 会继续添加它,但语言和编译器都不需要它。

您可以使用 value 以外的参数名称。另请注意,自 VS2010 SP1 起,您可以省略 ByVal 关键字。


示例:

Class Test

Private str As String = String.Empty

Public Property MyText() As String
Get
Return str
End Get
Set
str = value
End Set
End Property

Public Property MyText2() As String
Get
Return str
End Get
Set(something As String)
str = something
End Set
End Property

End Class

关于c# - 为什么 VB.NET 属性的 setter 需要类型化参数,为什么是 ByVal?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12383084/

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