码迷,mamicode.com
首页 > 其他好文 > 详细

C#容易被忽视的知识点(三)

时间:2014-08-26 15:03:36      阅读:190      评论:0      收藏:0      [点我收藏+]

标签:style   blog   color   os   使用   strong   for   ar   数据   

13、静态构造函数

  用途:用于初始化任何静态数据,或用于仅需执行一次的特定操作。在创建第一个实例或引用任何静态成员之前,将自动调用静态构造函数。

  特征:1、这种构造函数只执行一次,即在代码引用类之前调用它。

     2、静态构造函数没有访问修饰符,其他C#代码不能调用,在加载类时,由.NET运行库调用。

     3、出于同样的原因,静态构造函数不能带任何参数。

     4、一个类只能有一个静态构造函数。

     5、只能访问类的静态成员,不能访问类的实例成员。

     6、无参数的构造函数与静态构造函数可以在同一个类中同时定义,在加载类时执行静态构造函数,而在创建实例时执行实例构造函数。不会冲突。

  例子

 1    class StaticConstructorSample
 2     {
 3         public static readonly ConsoleColor backColor;
 4 
 5         /// <summary>
 6         /// 静态构造函数
 7         /// </summary>
 8         static StaticConstructorSample()
 9         {
10             DateTime now = DateTime.Now;
11             if (now.DayOfWeek == DayOfWeek.Saturday
12                 || now.DayOfWeek == DayOfWeek.Sunday)
13             {
14                 backColor = ConsoleColor.Blue;
15             }
16             else
17                 backColor = ConsoleColor.Red;
18         }
19 
20         /// <summary>
21         /// 实例构造函数
22         /// </summary>
23         private StaticConstructorSample()
24         {
25         }
26 
27 
28         /// <summary>
29         /// 程序主入口
30         /// </summary>
31         public static void Main()
32         {
33             Console.ForegroundColor = backColor;
34             Console.WriteLine("Hello");
35             Console.Read();
36         }
37     }

 


14、构造函数初始化器

 1     class StaticConstructorSample
 2     {
 3         public static readonly ConsoleColor backColor;
 4         private string id;
 5         private string name;
 6         private int age;
 7 
 8         /// <summary>
 9         /// 静态构造函数
10         /// </summary>
11         static StaticConstructorSample()
12         {
13             DateTime now = DateTime.Now;
14             if (now.DayOfWeek == DayOfWeek.Saturday
15                 || now.DayOfWeek == DayOfWeek.Sunday)
16             {
17                 backColor = ConsoleColor.Blue;
18             }
19             else
20                 backColor = ConsoleColor.Red;
21         }
22 
23         /// <summary>
24         /// 实例构造函数
25         /// </summary>
26         private StaticConstructorSample()
27         {
28             this.id = Guid.NewGuid().ToString("N");
29         }
30 
31         /// <summary>
32         /// 构造函数初始化器
33         /// 注意:会先执行没参数的构造函数,再执行有参数的构造函数,但不能有多个调用如
34         ///       private StaticConstructorSample(string name) : this(),this(20)   是错误的
35         /// </summary>
36         /// <param name="name"></param>
37         private StaticConstructorSample(string name)
38             : this()
39         {
40             this.name = name;
41         }
42 
43         /// <summary>
44         /// 没有使用构造函数初始化器,不会先执行没有参数的构造函数
45         /// </summary>
46         /// <param name="age"></param>
47         private StaticConstructorSample(int age)
48         {
49             this.age = age;
50         }
51 
52         /// <summary>
53         /// 程序主入口
54         /// </summary>
55         public static void Main()
56         {
57             Console.ForegroundColor = backColor;
58 
59             StaticConstructorSample sample1 = new StaticConstructorSample("Latin");
60             Console.WriteLine("the id of sample is : {0}",sample1.id);
61             Console.WriteLine("the name of sample is : {0}", sample1.name);
62             Console.WriteLine("the age of sample is : {0}", sample1.age);
63 
64             Console.WriteLine();
65 
66             StaticConstructorSample sample2 = new StaticConstructorSample(10);
67             Console.WriteLine("the id of sample is : {0}", sample2.id);
68             Console.WriteLine("the name of sample is : {0}", sample2.name);
69             Console.WriteLine("the age of sample is : {0}", sample2.age);
70 
71 
72             Console.Read();
73         }
74     }

 

C#容易被忽视的知识点(三)

标签:style   blog   color   os   使用   strong   for   ar   数据   

原文地址:http://www.cnblogs.com/qql1986/p/3937125.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!