我有一个非静态的类,因为我想使用实例,但是我也想让一个类(或一个实例)可全局访问。除了使一个类成为非静态类而使另一个类成为非静态类时,还有更好的选择吗?尽管两者实际上具有相同的代码?
如果我理解你的权利,你想要这样的东西:
public class MyClass {
...
public static MyClass Default {get;} = new MyClass();
...
public void DoSomething() {...}
}
因此您可以创建一个实例:
MyClass instance = new MyClass();
instance.DoSomething();
或使用默认值:
MyClass.Default.DoSomething();
另一个典型用法是>
public void Perform(MyClass value = null) { if (null == value) value = MyClass.Default; value.DoSomething(); ... }
然后
Perform(); // use Default MyClass instance
Perform(new MyClass()); // use provided MyClass instance