Статические классы и эффективность
Я хочу понять эффективность статических классов, так как думаю, что моё базовое мышление в этой области может быть ошибочным. Я часто пишу код, подобный следующему, предполагая, что дорогой вызов отражения будет происходить реже, так как закрытая переменная будет содержать информацию для средства доступа. Я почти уверен, что это хорошая практика в нестатических классах и свойствах экземпляров, но есть ли какая-либо польза от использования этой конструкции в статических классах, или нужно создавать частное поле при каждом обращении к общедоступному аксессору?
using System.Reflection;
public static class ApplicationInformation
{
public static Assembly ExecutingAssembly
{
get { return executingAssembly ?? (executingAssembly = Assembly.GetExecutingAssembly()); }
}
private static Assembly executingAssembly;
}
1 ответ
Зачем это нужно делать при каждом вызове? Это статическое поле, оно будет "жить" столько же, сколько и AppDomain, как и любое другое статическое поле.
Правда, я бы использовал typeof(ApplicationInformation).Assembly
вместо этого, что, вероятно, дешевле... но это другой вопрос.