Статические классы и эффективность - PullRequest
0 голосов
/ 03 сентября 2010

Я хочу понять эффективность статических классов, так как думаю, что моё базовое мышление в этой области может быть ошибочным.Я часто пишу код, подобный следующему, предполагая, что дорогостоящий вызов отражения будет происходить реже, поскольку закрытая переменная будет содержать информацию для средства доступа.Я почти уверен, что это хорошая практика в нестатических классах и свойствах экземпляров, но есть ли какая-либо польза от использования этой конструкции в статических классах, или нужно создавать частное поле при каждом вызове общедоступного метода доступа?

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

1 Ответ

2 голосов
/ 03 сентября 2010

С чего бы это создавалось при каждом вызове? Это статическое поле, оно будет «жить» столько же, сколько и AppDomain, как и любое другое статическое поле.

Правда, я бы вместо этого использовал typeof(ApplicationInformation).Assembly, что, вероятно, дешевле ... но это другой вопрос.

...