静态构造函数是C#的一个新特性,其实好像很少用到。不过当我们想初始化一些静态变量的时候就需要用到它了。这个构造函数是属于类的,而不是属于哪里实例的,就是说这个构造函数只会被执行一次。也就是在创建第一个实例或引用任何静态成员之前,由.NET自动调用。
在使用静态构造函数的时候应该注意几点:
1、静态构造函数既没有访问修饰符,也没有参数。因为是.NET调用的,所以像public和private等修饰符就没有意义了。
2、是在创建第一个类实例或任何静态成员被引用时,.NET将自动调用静态构造函数来初始化类,也就是说我们无法直接调用静态构造函数,也就无法控制什么时候执行静态构造函数了。
3、一个类只能有一个静态构造函数。
4、无参数的构造函数可以与静态构造函数共存。尽管参数列表相同,但一个属于类,一个属于实例,所以不会冲突。
5、最多只运行一次。
6、静态构造函数不可以被继承。
7、如果没有写静态构造函数,而类中包含带有初始值设定的静态成员,那么编译器会自动生成默认的静态构造函数。
class SimpleClass { // Static constructor static SimpleClass() { // } }
在使用静态构造函数的时候应该注意几点:
1、静态构造函数既没有访问修饰符,也没有参数。因为是.NET调用的,所以像public和private等修饰符就没有意义了。
2、是在创建第一个类实例或任何静态成员被引用时,.NET将自动调用静态构造函数来初始化类,也就是说我们无法直接调用静态构造函数,也就无法控制什么时候执行静态构造函数了。
3、一个类只能有一个静态构造函数。
4、无参数的构造函数可以与静态构造函数共存。尽管参数列表相同,但一个属于类,一个属于实例,所以不会冲突。
5、最多只运行一次。
6、静态构造函数不可以被继承。
7、如果没有写静态构造函数,而类中包含带有初始值设定的静态成员,那么编译器会自动生成默认的静态构造函数。
发表评论
-
C# 实现将文件夹分卷压缩
2015-04-17 17:01 1243http://bbs.csdn.net/topics/3907 ... -
C#发送邮件
2015-04-17 15:58 696public class SendEmailHelper ... -
C# xml文件读取
2015-02-11 16:08 648看附件................ -
什么时候该用委托,为什么要用委托,委托有什么好处....
2015-01-29 16:56 819http://www.cnblogs.com/superpce ... -
C#中动态加载和卸载DLL
2015-01-26 14:02 1426在C++中加载和卸载DLL是一件很容易的事,LoadLibra ... -
转:c#常用的18种设计模式
2015-01-21 08:16 779http://blog.jobbole.com/78130/ -
C#委托的介绍(delegate、Action、Func、predicate)
2015-01-09 17:26 1133http://www.cnblogs.com/akwwl/p/ ... -
接口和抽象类有什么区别 .
2014-12-22 16:35 617接口和抽象类有什么区别 你选择使用接口和抽象类的依据是什么 ... -
C#一个简单写日志文件的类
2014-12-11 09:57 1113/// <summary> /// L ... -
Linq初级班 Linq to DataSet体验(单表、多表联合查询JOIN语法)
2014-12-10 14:34 356http://www.cnblogs.com/huangcon ... -
C#泛型详解
2014-11-29 11:31 483我们在编写程序时,经常遇到两个模块的功能非常相似,只是一个是处 ... -
线程同步与异步的区别
2014-11-26 09:12 884异步处理就是按照不同步的程序处理问题。异步处理与同步处理是对立 ... -
应用C#和SQLCLR编写SQL Server用户定义函数 .
2013-10-09 17:07 486http://blog.csdn.net/zhzuo/arti ... -
log4Net简介
2013-06-30 11:32 575使用log4Net可以将系统听日志保存到DB、日志文件、邮箱中 ... -
DataGridView历史记录的前进与后退操作
2013-06-23 11:13 1108此功能介绍:DataGridView频繁查询数据时,可以将每次 ... -
c# 对INI配置文件的读取操作
2013-06-17 10:51 678此种方法只对如下格式的INI文件起作用 server=loca ... -
对DataGridView控件的扩展开发
2013-06-15 21:47 2381首先在项目中引用 ... -
对集合控件(ListBox,ComboBox,TreeView,RichTextBox,DataGridView)的查找、替换操作控件
2013-06-15 09:39 1550一、程序入口: using System; using ... -
C#对文件、文件夹操作公用组件
2013-06-11 09:46 968namespace HR.Class.IO { / ... -
TreeView控件操作开发篇之(五)
2013-06-09 00:09 828#region 加载文件夹及文件到树 ...
相关推荐
以下是关于C#静态构造函数的详细说明: 1. 访问性与参数: 静态构造函数没有访问修饰符,如public或private,因为它们由.NET框架自动调用。同样,它们也不接受参数,因为它们不用于创建实例,而是用于初始化类级的...
因此,若要确保类不能被实例化,除了声明私有构造函数,还需要考虑以下几点: - 显式声明私有构造函数,以消除任何可能的误解。 - 在类中添加静态成员和静态方法,以表明类的设计意图。 - 提供一个静态工厂方法(如...
C#构造函数是用来初始化对象的,主要有静态构造函数和实例构造函数两种类型。构造函数的使用可以使对象的初始化更加灵活、可靠。在实际开发中,构造函数经常用来初始化对象的属性,例如: ```csharp public class A ...
实例构造函数用于初始化实例成员,静态构造函数用于初始化静态成员,两者都不能有返回值。 6. 静态和实例成员:静态成员属于类,不需要实例化就能访问;实例成员属于类的实例,需要实例化后才能访问。 7. 常量和...
在C#编程语言中,学习基础入门Word文档主要涉及以下几个核心知识点: 1. 引用类型:在C#中,String、数组、类、接口和委托都属于引用类型。它们的内存分配在堆上,使用指针地址进行访问。引用类型具有类型安全的...
本实验报告主要围绕C#编程语言的几个核心概念进行深入探讨,包括静态类与非静态类的区别、静态字段、静态方法和静态构造函数的使用,类的继承性与多态性,抽象类与接口的理解,以及分部类和命名空间的掌握。...
9. 静态构造函数:类和结构都可以有静态构造函数,用于在类型首次使用时执行一次性初始化。然而,如果结构中同时存在无参数的构造函数和有参数的构造函数,调用无参数构造函数时静态构造函数不会被调用。只有在调用...
public Person(string name) : this() { // 构造函数重载,传入Name Name = name; } public Person(string name, int age) : this(name) { // 再次重载,传入Name和Age Age = age; } } ``` 在这个例子中,`...
在这道关于实例化顺序的C#面试题中,我们可以总结出以下几个重要的知识点: 1. 内联(inline)方式初始化字段:在C#中,我们可以使用内联方式来初始化字段,这是一种简化的语法。例如:`public class SomeType { ...
MsComm 类的构造函数是 public MsComm(),用于初始化串口操作类。 add 方法: add 方法是 MsComm 类的重要方法之一,用于初始化串口并打开串口。该方法有六个参数,分别是 PortNum、Parity、BaudRate、ByteSize、...
在学习C#编程语言的过程中,初级阶段通常会涉及基础的面向对象编程(OOP)概念,包括类、对象、构造函数、析构函数、访问修饰符、方法以及方法的重载等。这些知识点是理解C#编程的基础,也是构建复杂软件系统的关键...
`static`关键字在C#中用于定义静态成员,包括静态方法、属性、字段和构造函数。静态成员属于类本身,而不是实例,这意味着它们可以在没有创建类实例的情况下访问,并且只在内存中存在一份。这可以用于存储常量数据或...
- 子类构造函数的执行顺序是先调用父类构造函数,然后是子类构造函数,选项B正确。 - 选项D错误,因为如果父类没有无参构造函数,子类必须显式调用带参数的构造函数,并提供匹配的参数。 5. 抽象类: - 抽象类不...
在C#中,通常通过私有化构造函数和静态成员来实现。这样可以避免资源浪费,如数据库连接或线程池等昂贵的对象。 - 示例实现:可以使用`Lazy<T>`类或静态内部类来实现线程安全的单例。 2. **观察者模式(Observer)...
知识点:C#提供默认的无参数构造函数,但是如果实现了其他构造函数,需要手动实现无参数构造函数。 8. C#中所有对象共同的基类是什么? 答案:System.Object. 知识点:所有C#对象的基类是System.Object,提供了...
2. **初始化静态实例**:在窗体构造函数中初始化这个静态实例: ```csharp public frmFather() { InitializeComponent(); frmFatherTemp = this; } ``` 3. **定义属性**:在窗体中定义一个用于读写的属性,以...
在“C#面向对象程序实例”中,我们可以深入学习和理解以下几个关键知识点: 1. 类与对象:类是创建对象的模板,定义了一组属性(数据成员)和方法(行为)。对象是类的实例,具备类所描述的特征和行为。在C#中,...
C#有两种构造函数:无参构造函数和带参数的构造函数。无参构造函数默认提供,而带参数的构造函数用于在创建对象时传入初始值。 5. **析构函数**:虽然不常用,但C#也支持析构函数,用`~`符号定义,用于在对象即将被...