1

次のように、変数を App クラスの静的メンバーとして定義することに違いはありますか:

public static string myValue;
//
string value = App.myValue;

(App.Current as App) を使用して、次のようにアプリのプロパティを取得します。

public string myValue { set; get; }
//
string value = (App.Current as App).myValue
4

1 に答える 1

2

Appから派生した場合Application、ほとんど違いはありません。

小さな違いは、プログラムの冒頭 (Mainたとえば )App.Currentではまだnullですが、静的プロパティは既にアクセス可能になっています。これは、Applicationクラスが実際のシングルトンではないためです (またはCurrent、作成がトリガーされないためです。この動作は少なくとも WPF 3.5 の場合です)。

他の小さな違いはもちろん、最初のケースmyValueではプロパティではなくフィールドであることです。そのため、プロパティを期待するシナリオ (バインディングなど) は失敗します。

于 2012-04-16T11:09:39.053 に答える