我想了解静态类的效率,因为我认为我在这方面的基本思想可能存在缺陷。我经常编写如下代码,假设昂贵的反射调用将不太频繁地发生,因为私有变量将保存访问者的信息。我很确定这是非静态类和实例属性的好习惯,但在静态类中使用这个结构有什么好处,或者私有字段是否需要在每次调用公共访问器时实例化?
using System.Reflection;
public static class ApplicationInformation
{
public static Assembly ExecutingAssembly
{
get { return executingAssembly ?? (executingAssembly = Assembly.GetExecutingAssembly()); }
}
private static Assembly executingAssembly;
}
答案 0 :(得分:2)
为什么每次通话都会实例化?它是一个静态字段,它会像AppDomain一样“生存”,就像任何其他静态字段一样。
不可否认,我会使用typeof(ApplicationInformation).Assembly
,这可能更便宜......但这是另一回事。