C#中静态构造函数和一般构造函数有什么区别?另外被定义为静态的变量对象是不是都不能使用修饰符?

2024-12-20 21:25:41
推荐回答(5个)
回答1:

静态构造函数只在类被调用的第一次启动 类似初始化的作用

静态构造函数不会建立一个实例 而是用于初始化函数本身的一些static的字段的

没有参数 也没有修饰符

例如
public class Database
{
private static readonly string CONNString;
static Database()
{
///从配置文件中读出 数据库连接字符串,并赋值,
CONNString = ".................";
}
public Database()
{
//这里可以调用CONNString 但是以后都无法更改 CONNString

}

}

没有静态变量的说法 通常是静态的字段 为了避免不同线程造成对静态字段更改的不可控事件发生 通常静态字段都使用readonly 表示初始化以后 就只读了
但是也可以不使用 readonly

静态的字段或者属性 以及方法 都可以使用public protect private internal等修饰符
接口中的属性和方法 默认都是public 所以不使用修饰符
静态的字段属性 方法 可以被继承 但是不可以使用虚方法(virtual)重写(override)

静态构造函数是程序调用到类 只在首次 执行一次
一般构造函数 是每次实例化一个类 就会执行一次

回答2:

静态构造函数只能用在静态类中,全局只运行一次,用于初始化该静态类。
比如 我要做一个Setting类,它里面有 name、path等字段,都是静态的,这些值存储在一个xml或者文本文档里,现在程序运行了 我要读取这些外部文档来填充这些静态字段,那么这个读取过程写在静态构造函数中是最方便的。

回答3:

亲,静态构造函数既没有访问修饰符,也没有参数,非静态类里可以有参数、访问修饰符(internal和public )

回答4:

如果你学习过其他的语言的话就可以理解为何你所学习的那门语言里的意译是一样的含义

回答5: