请教:如何在C#类中实现静态代码段?类似java的static{}

时间:2022-12-10 00:39:26
在网上搜了一圈,居然没有找到正确答案。很多人把静态方法和静态代码段搞混了。
两者的区别在于:
静态代码段是类在不论任何情况下被加载时被自动调用(注意是类被加载,不是类实例化。当然实例化肯定就触发了类加载),比如静态方法调用,实例化一个对象等等。但是注意,只会调用一次。它的作用在于对类作一些初始化工作,一般用于单例模式的饱汉模式。
而静态方法则必须显式的调用,而且次数不限。
举个例子:
java代码表示静态代码段如下
public class Class1{
  static{
    //静态代码段-无法显式调用,只能被动执行。
    //无论执行如何一个静态方法,这段代码会先执行。也就是说类不论是否实例化,只要一加载类就执行这段代码。
    //但是只执行一次!
  }
  
  public static void methond1(){
    //静态方法代码1-显式调用
  }
  public static void methond2(){
    //静态方法代码2-显式调用
  }
}


在Net的C#中(VB类似)不知道怎样实现这样的静态代码段,我按照java的模式书写报语法错误。
class Class1
{
  static
  {
  }

}


谢谢赐教!

6 个解决方案

#1


好像没有这个写法

需要你在每个方法里面自己调用

#2


没有这样的写法,这样调用的意义不大,因为很多方式都可以实现这样的操作,而且更灵活,比如application.start

#3


似乎C#里没有这个说法

#4


静态构造函数 会在类第一次被使用的使用被调用  通常用来初始化 静态变量

class Class1
{
  static Class1()
  {
     .....
  }

}

#5


你是否搞个静态构造函数试试?

#6


引用 2 楼 carpathia 的回复:
没有这样的写法,这样调用的意义不大,因为很多方式都可以实现这样的操作,而且更灵活,比如application.start

你可以用变通的方法实现,但并不是说这样的写法没有意义,你有兴趣可以仔细想想,很有意义的,只是你没有遇到这种设计模式。

谢谢4楼和5楼,你们说的正是我想要的解决办法。java应该一样,我居然没想到。

分已散。

#1


好像没有这个写法

需要你在每个方法里面自己调用

#2


没有这样的写法,这样调用的意义不大,因为很多方式都可以实现这样的操作,而且更灵活,比如application.start

#3


似乎C#里没有这个说法

#4


静态构造函数 会在类第一次被使用的使用被调用  通常用来初始化 静态变量

class Class1
{
  static Class1()
  {
     .....
  }

}

#5


你是否搞个静态构造函数试试?

#6


引用 2 楼 carpathia 的回复:
没有这样的写法,这样调用的意义不大,因为很多方式都可以实现这样的操作,而且更灵活,比如application.start

你可以用变通的方法实现,但并不是说这样的写法没有意义,你有兴趣可以仔细想想,很有意义的,只是你没有遇到这种设计模式。

谢谢4楼和5楼,你们说的正是我想要的解决办法。java应该一样,我居然没想到。

分已散。