0

の組み込み型の1つを使用VB.NETすると、1つの短い行で宣言して初期化できます...

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 = "Привет мир"

4

2 に答える 2

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"}

プロパティを読み取り専用にし、コンストラクターを介してのみ初期化する必要がある場合は、現在のコードで問題ありません。

于 2013-01-11T07:40:30.957 に答える
2

必要なことは、暗黙の変換演算子で実行できます。

class bar
{
 //...
    public static implicit operator bar(string value)
    {
        return new bar(value);
    }
}

下書き線を短くする目的でこの機能を使用することはお勧めしませんが、これは悪い習慣です。

ps c#コードスニペットでごめんなさい。

于 2013-01-11T07:43:09.050 に答える