静态和非静态类[关闭]

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了静态和非静态类[关闭]相关的知识,希望对你有一定的参考价值。

我有一个非静态的类,因为我想使用实例,但是我也想让一个类(或一个实例)可全局访问。除了使一个类成为非静态类而使另一个类成为非静态类时,还有更好的选择吗?尽管两者实际上具有相同的代码?

答案

如果我理解你的权利,你想要这样的东西:

  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

以上是关于静态和非静态类[关闭]的主要内容,如果未能解决你的问题,请参考以下文章

MSIL 静态类在 IL 定义上和非静态类的差别

(转) Java 静态代码块和非静态代码块

Java的外部类和内部类+静态变量和非静态变量的组合关系

静态和非静态初始化代码块有啥区别

静态类和非静态类方法

关于JVM加载类与静态块和非静态块[重复]