如果我在VB.NET
中使用其中一种内置类型,我可以在一条短线中声明并初始化...
Dim foo As String = "Привет мир"
我创建了一个班级" bar"使用以下重载的构造函数方法...
Public Class bar
Private fText As String
Public Sub New()
fText = ""
End Sub
Public Sub New(ByVal value As String)
fText = value
End Sub
Public ReadOnly Property Text() As String
Get
Return fText
End Get
End Property
End Class
如何编写构造函数,以便我可以执行更短版本的声明/初始化而不是执行以下操作?
目前bar
我执行此操作:
Dim myBar As bar
myBar = New bar("Привет мир")
如何设置bar
以便可以使用这个更短的版本?:Dim myBar As bar = "Привет мир"
答案 0 :(得分:2)
如果您使用公共设置器创建该属性:
Public Class bar
Public Property Text() As String
Sub New()
' set a default value for the property
Text = ""
End Sub
End Class
你可以使用类初始化语法:
Dim bar = New bar With {.Text = "Привет мир"}
使用此语法,您可以在实例化对象时设置任何公共属性。您不需要特定的构造函数:
Dim bar = New bar With {.Text = "Привет мир", .Foo = "foo", .Bar = "bar"}
如果属性应该只读并仅通过构造函数初始化,那么您当前的代码就可以了。
答案 1 :(得分:2)
您想要的是隐式转换运算符:
class bar
{
//...
public static implicit operator bar(string value)
{
return new bar(value);
}
}
虽然我不建议使用此功能来缩短施工线,但这是一种不好的做法。
抱歉,对于c#代码段。