[C#]C#补习——静态构造函数、静态成员和常量相关

简介:

      上一篇补习了类和方法,这一篇补习下类中一些静态成员和常量。

以下是本文所要介绍的内容:

1、静态构造函数

2、静态成员与常量

 

一、静态构造函数

     前段时间经常看到园子里有朋友发面试题,其中比较有代表性的就是静态构造函数了,有兴趣的朋友可以搜索下看看,我这边也就顺便补习下静态构造函数的知识:

1、静态构造函数永远优先与其他构造函数。

2、静态构造函数是在首次访问所在类的第一个成员时进行的,并且只会执行一次。

3、静态构造函数没有参数,不需要任何访问修饰符,有.NET runtime运行。

4、类中一旦包含静态构造函数,那么编译器会自动插入一段检查代码负责检查所有静态成员和构造,以确保其优先运行。

所以在了解了以上知识后再看下面的代码就会清楚很多:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
class  Class1
     {
         public  static  string  str = "fsdafdsa" ;
         public  static  readonly  Class1 anobject = new  Class1();
 
         static  Class1()
         {
             System.Console.WriteLine( "静态构造函数调用" );
         }
 
         private  Class1()
         {
 
         }
 
         public  static  Class1 c()
         {
             return  new  Class1();
         }
     }
static  void  Main( string [] args)
     {
          string  s = Class1.str;
          Class1 temp =Class1.c();
                 
          Console.WriteLine( "程序开始" );
          Console.ReadLine();
      }

结果输出时,字符串“静态构造函数调用”会第一个被输出,这是因为string s = Class1.str; 这句代码已经访问了类中的成员了,符合上面的第2条。

 

二、静态成员与常量

     对于类来说,一个类中可以包含许多成员,而且大部分成员都可以是静态的,比如:变量、属性、方法等。同样需要注意的有以下几点:

1、如果不包含静态构造函数,那么静态字段会在访问类的任何静态字段时候进行初始化及赋值。

2、除非需要访问一个静态字段,否则不必对静态成员进行初始化。

3、对于静态类,在IL的最终标记为abstract和sealed。

 

在为字段设定是否为常量(const)或只读(readonly)时,需要注意:

1、const常量会在编译时就固定,所以常量建议是不会更改的变量,否则如果一旦发生更改且没有重新编译那么程序访问的还是老的值,所以对于可能会更改的值还是设置为readonly。

2、当将变量数组设置为readonly的时候,其数组的长度是无法更改的,但是其中的值是可以更改的。

3、应用了readonly的变量可以在构造函数中对其进行更改。



本文转自kyo-yo博客园博客,原文链接:http://www.cnblogs.com/kyo-yo/archive/2010/12/31/CSharp-Tutorial-About-Static-Ctor-And-Member-And-Const.html,如需转载请自行联系原作者


目录
相关文章
|
1月前
|
存储 安全 数据库连接
C#深度揭秘:常量的魅力和实践,一文让你从新手到专家
C#深度揭秘:常量的魅力和实践,一文让你从新手到专家
16 0
|
3月前
|
C# 开发者
C# 10.0引入常量插值字符串:编译时确定性的新篇章
【1月更文挑战第22天】在C# 10.0中,微软为开发者带来了一项引人注目的新特性——常量插值字符串。这一功能允许在编译时处理和计算字符串插值表达式,从而得到可以在编译时确定的常量字符串。本文将深入探讨C# 10.0中常量插值字符串的概念、工作原理、使用场景及其对现有字符串处理方式的改进,旨在帮助读者更好地理解和应用这一强大的新特性。
|
7月前
|
存储 开发框架 编译器
C#OOP之六 构造函数和析构函数
C#OOP之六 构造函数和析构函数
18 0
|
7月前
|
C#
C# 继承类中(父类与子类)构造函数的调用顺序
C# 继承类中(父类与子类)构造函数的调用顺序
|
1月前
|
编译器 C#
c#学习相关系列之构造函数
c#学习相关系列之构造函数
|
3月前
|
程序员 C#
C# 面向对象编程进阶:构造函数详解与访问修饰符应用
构造函数是一种特殊的方法,用于初始化对象。构造函数的优势在于,在创建类的对象时调用它。它可以用于为字段设置初始值
46 1
|
9月前
|
C#
【C#视频】常量、枚举、结构体、数组
【C#视频】常量、枚举、结构体、数组
|
9月前
|
安全 C#
C#视频之构造函数
C#视频之构造函数
44 0
|
10月前
|
C# 索引
C#之常量与变量排错
C#之常量与变量排错
|
10月前
|
存储 编译器 C#
C#变量与常量的区分和总结
C#变量与常量的区分和总结