3

なぜこれが有効なのですか

public struct MyStruct
{
    public MyStruct(double value)
    {
        myField = value;
    }

    private double myField;

    public double MyProperty
    {
        get
        {
            return myField;
        }
        set
        {
            myField = value;
        }
    }
}

これはそうではありません

public struct MyStruct
{
    public MyStruct(double value)
    {
        MyProperty = value;
    }
    public double MyProperty
    { 
        get; 
        set;
    }
}
4

3 に答える 3

3

次の構文が必要です。

public struct MyStruct 
{
    public MyStruct(double value) : this()
    {
        MyProperty = value;
    }

    public double MyProperty { get; set; }
}

その情報は、のSO 投稿から取得しました。

于 2009-11-30T02:21:02.230 に答える
3

コンストラクターを次のように変更できますか。

public MyStruct(double value)  : this()
{
    myField = value;
}

これは、バッキング フィールドにデータが入力されるまでプロパティにアクセスできないためです。デフォルトのコンストラクターを呼び出すと、自動実装されたプロパティ バッキング フィールドにデータが入力され、プロパティにアクセスできるようになります。欠点は、プロパティを 2 回 (基本コンストラクターで 1 回、コンストラクターで 1 回) 設定していることです。

プロパティを使用する必要がなく、代わりにフィールドを使用できる場合は、問題を回避できます。

于 2009-11-30T02:26:21.083 に答える
1

get setは必要ありません。作成しない場合は、何もしません。タイプチェックに使用する必要があります。2番目の作業を削除するには:{get; セットする; }

于 2009-11-30T02:07:31.947 に答える