两者的区别在于:
静态代码段是类在不论任何情况下被加载时被自动调用(注意是类被加载,不是类实例化。当然实例化肯定就触发了类加载),比如静态方法调用,实例化一个对象等等。但是注意,只会调用一次。它的作用在于对类作一些初始化工作,一般用于单例模式的饱汉模式。
而静态方法则必须显式的调用,而且次数不限。
举个例子:
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()
{
.....
}
}
class Class1
{
static Class1()
{
.....
}
}
#5
你是否搞个静态构造函数试试?
#6
你可以用变通的方法实现,但并不是说这样的写法没有意义,你有兴趣可以仔细想想,很有意义的,只是你没有遇到这种设计模式。
谢谢4楼和5楼,你们说的正是我想要的解决办法。java应该一样,我居然没想到。
分已散。
#1
好像没有这个写法
需要你在每个方法里面自己调用
需要你在每个方法里面自己调用
#2
没有这样的写法,这样调用的意义不大,因为很多方式都可以实现这样的操作,而且更灵活,比如application.start
#3
似乎C#里没有这个说法
#4
静态构造函数 会在类第一次被使用的使用被调用 通常用来初始化 静态变量
class Class1
{
static Class1()
{
.....
}
}
class Class1
{
static Class1()
{
.....
}
}
#5
你是否搞个静态构造函数试试?
#6
你可以用变通的方法实现,但并不是说这样的写法没有意义,你有兴趣可以仔细想想,很有意义的,只是你没有遇到这种设计模式。
谢谢4楼和5楼,你们说的正是我想要的解决办法。java应该一样,我居然没想到。
分已散。