0

私は次のクラスを持っています:

public class test
{
    private int i;
    public test(int in)
    {
        i = in;
    }
    public int testint;
    {
        get { return i; }
        set { i = testint; }
    }
}

そして、次のコード:

test[] data = new test[3];
for(int j = 0; j < 3; j++)
{
    data[i] = new test(0);
    data[i].testint = int.Parse(Console.ReadLine());
}
Console.WriteLine(test[0].testint);
Console.WriteLine(test[1].testint);
Console.WriteLine(test[2].testint);

このプログラムを実行し、入力として 1、2、3 を入力すると、出力は 0、0、0 になります。get または set が機能していないように見える理由がわかりません。配列要素を 0 以外の値で初期化すると、出力はそのようになります。data[i].testint = int.Parse(Console.ReadLine()); 動作していないようです。どうすればそのようなことをすることができますか?

4

5 に答える 5

3

set メソッドを次のように変更します。

public int testint
{
   get { return i; }
   set { i = value; }
}
于 2013-02-22T17:42:33.747 に答える
3

あなたのセッターは間違っています。そのはず:

 set { i = value; }

持っていた:

 set { i = testint; }

から取得するゲッターのみをトリガーするiため、最終的にセッターはi = i.

セッターでは、valueキーワードにはプロパティの新しい候補値が含まれます。valueの型はプロパティの型と同じです。候補値と言うのは、それを検証して適用しないことを選択できるからです。

あなたの場合、値を適用していませんでした。

アップデート

また、ゲッターとセッターを定義するときは、セミコロンを使用しないでください。コードは次のようになります。

public int testint
{
    get { return i; }
    set { i = value; }
}
于 2013-02-22T17:40:05.557 に答える
3

このコードには 2 つのエラーがあります。

public int testint;
{
    get { return i; }
    set { i = testint; }
}

testint先頭の後にセミコロンがあってはなりません。また、次のようsetに using を割り当てる必要があります。value

public int testint
{
    get { return i; }
    set { i = value; }
}
于 2013-02-22T17:40:36.480 に答える
2

セッターを次のように変更します。

set { i = value; }

value は、変数を設定するために送信する値に対応します。

于 2013-02-22T17:40:40.017 に答える
1

これが簡単な方法です。

public int TestInt {get; set;}
于 2013-02-22T17:42:42.373 に答える