0

この分野での私の基本的な考え方には欠陥があるのではないかと思うので、静的クラスの効率を理解したいと思います。プライベート変数がアクセサーの情報を保持するため、コストのかかるリフレクション呼び出しがあまり頻繁に発生しないという前提で、次のようなコードを書くことがよくあります。これは非静的クラスとインスタンス プロパティでの適切なプラクティスであると確信していますが、静的クラスでこの構成を使用する利点はありますか、それともパブリック アクセサーへの呼び出しごとにプライベート フィールドをインスタンス化する必要がありますか?

using System.Reflection;
public static class ApplicationInformation
{
    public static Assembly ExecutingAssembly
    {
        get { return executingAssembly ?? (executingAssembly = Assembly.GetExecutingAssembly()); }
    }
    private static Assembly executingAssembly;
}
4

1 に答える 1

2

すべての呼び出しでインスタンス化されるのはなぜですか? これは静的フィールドであり、他の静的フィールドと同様に、AppDomain が存在する限り「存続」します。

確かに、代わりに使用したいと思いますtypeof(ApplicationInformation).Assembly。これはおそらく安価です...しかし、それは別の問題です。

于 2010-09-03T09:03:44.037 に答える