3

これは、インターウェブで実際に見つけることができなかった興味深い情報です。アイデアは、int a { get; などのプロパティがある場合です。設定; それ自体を設定できます。

プロパティを int a { get { } set { } } で設定するにはどうすればよいですか?

セット内で何が起こっています;?

これが私がやろうとしたことです:

public string Symbol { get { return Symbol; } set { Symbol = value; NotifyPropertyChangedEvent("Symbol");  } }

しかし、本質的に何度も自分自身を呼び出しているため、明らかにスタック オーバーフローが発生します。

また、プロパティと一緒に機能する 10 ~ 20 個のプライベート変数を作成したくありません。set; で何が起こっているのかを知りたいのです。

ありがとうございました。

4

4 に答える 4

10

set;見えないプライベート変数を作成するだけです。10 ~ 20 個のプライベート変数が必要になります。申し訳ありません。

于 2012-08-20T20:19:56.533 に答える
2

プライベート変数を作成する必要があります。

残念ながら、あなたがここにいる特定の状況では、それが唯一の方法です.

于 2012-08-20T20:20:12.287 に答える
1

カスタム ロジックが必要な場合は、バッキング フィールドを自分で提供する必要があります。

private string symbol;
public string Symbol 
{ 
    get { return symbol; } 
    set { symbol = value; NotifyPropertyChangedEvent("Symbol");  } 
}

また、プロパティと一緒に機能する 10 ~ 20 個のプライベート変数を作成したくありません。set; で何が起こっているのかを知りたいのです。

自動プロパティ (つまり: public string Symbol { get; set; }) を使用すると、コンパイラはバッキング フィールドを自動的に作成します。ただし、バッキング フィールドを自分で管理せずにロジックを導入する (つまり、イベントを発生させる) 方法はありません。

于 2012-08-20T20:21:12.717 に答える
1

コンパイル時にバッキング フィールドを生成します。まだ作成されていないため、IntelliSense 経由でアクセスすることはできません。「_a」がまだ生成されていない場合は、次のようになります。

private int _a;
public int a
{
    get { return _a; }
    set { _a = value; }
}

ただし、クラス内からプロパティ自体を設定することもできます。

public int a { get; set; }

a = ...;

さらに、内部的にのみ設定できるようにする場合は、get および set に修飾子を設定できます。

public int a { get; private set; }
于 2012-08-20T20:21:50.413 に答える