次のように、変数を 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
次のように、変数を 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
App
から派生した場合Application
、ほとんど違いはありません。
小さな違いは、プログラムの冒頭 (Main
たとえば )App.Current
ではまだnull
ですが、静的プロパティは既にアクセス可能になっています。これは、Application
クラスが実際のシングルトンではないためです (またはCurrent
、作成がトリガーされないためです。この動作は少なくとも WPF 3.5 の場合です)。
他の小さな違いはもちろん、最初のケースmyValue
ではプロパティではなくフィールドであることです。そのため、プロパティを期待するシナリオ (バインディングなど) は失敗します。