-3

を受け取るプロパティがありint、各get Numberがを返すのでint、を1つ増やす必要がありintます。
私がこれが好きなら:

    public int Number
    {
        set;
        get
        {
            Number++;
            return Number;
        }
    }

7000から始めると、7001から始まるので、良くありません
。返品後にどのように増やすことができますか?

使用できますreturn Number++;か?

4

2 に答える 2

7

まず、現在のコードはStackOverflowExceptionをスローします

なんで?を返すためNumberですが、を返すにNumberは値を読み取りNumberます。したがって、get無限に呼び出されます。

次に、主な問題を解決するためにPostfixインクリメント演算子を使用してください。

これを試して:

    private int number;

    public int Number
    {
        set { number = value; }
        get
        {
            return number++;
        }
    }
于 2013-03-14T12:29:01.283 に答える
2

私はこれを避けるでしょう。

プロパティに関する最初のベスト プラクティスは一貫性です。つまり、getter が呼び出されたときにプロパティがクラスのメンバーを変更してはなりません。基本的に、ゲッターへの複数の連続した呼び出しは同じ値を返す必要があります (たとえばDateTime.Now、例外がありますが、それらはエッジ ケースです)。

操作(あなたの場合はインクリメント)を計算したい場合は、おそらく関数を使用する必要があります。

MSDNから:

一般に、メソッドはアクションを表し、プロパティはデータを表します。プロパティはフィールドのように使用されます。つまり、プロパティは複雑な計算を行ったり、副作用を引き起こしたりしてはなりません。

あなたが見ることができる最初の副作用は、あなたのプロパティに時計がある場合にあなたの番号を静かにインクリメントするデバッガです...

于 2013-03-14T12:40:11.983 に答える