public class Person{ private string name; private int age; public Person(string n, int a) { name = n; age = a; } // 类中剩余的成员 }只要创建 Person 类的对象,就会调用类中的实例构造函数,我们只需要在实例化对象时将具体的值传递给类中的构造函数即可,如下所示:
Person P = new Person("张三", 18);
如果没有为类显式的创建构造函数,那么 C# 将会为这个类隐式的创建一个没有参数的构造函数(无参数构造函数),这个无参的构造函数会在实例化对象时为类中的成员属性设置默认值(关于 C# 中类型的默认值大家可以查阅《数据类型》一节)。在结构体中也是如此,如果没有为结构体创建构造函数,那么 C# 将隐式的创建一个无参数的构造函数,用来将每个字段初始化为其默认值。using System; namespace task.lmcjl.com { class Demo { public static int num = 0; // 构造函数 Demo(){ num = 1; } // 静态构造函数 static Demo(){ num = 2; } static void Main(string[] args) { Console.WriteLine("num = {0}", num); Demo Obj = new Demo(); Console.WriteLine("num = {0}", num); Console.Read(); } } }当执行上面程序时,会首先执行
public static int num = 0
,接着执行类中的静态构造函数,此时 num = 2,然后执行 Main 函数里面的内容,此时打印 num 的值为 2,接着初始化 Demo 类,这时会执行类中的构造函数,此时 num 会重新赋值为 1,所以上例的运行结果如下所示:
num = 2
num = 1
class NLog { // 私有构造函数 private NLog() { } public static double e = Math.E; //2.71828... }上例中定义了一个空的私有构造函数,这么做的好处就是空构造函数可阻止自动生成无参数构造函数。需要注意的是,如果不对构造函数使用访问权限修饰符,则默认它为私有构造函数。
using System; namespace task.lmcjl.com { class Demo { static void Main(string[] args) { // Student stu = new Student(); Student.id = 101; Student.name = "张三"; Student.Display(); Console.Read(); } } public class Student { private Student() { } public static int id; public static string name; public static void Display() { Console.WriteLine("姓名:"+name+" 编号:"+id); } } }运行结果如下:
姓名:张三 编号:101
注意,上述代码中,如果取消 Main 函数中注释的 Student stu = new Student();
,程序就会出错,因为 Student 类的构造函数是私有静态函数,受其保护级别的限制不能访问。
本文链接:http://task.lmcjl.com/news/14482.html