常量、只读的、静态三者怎么在c#中使用

  

const,只读的,静态三者怎么在c#中使用?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。

理解const

const常用来定义一个常量,什么意思呢?就是这个常量在你程序的生命周期内都不会被改变,因此,必须在声明常量时为其赋值,从技术角度上来说:这个常量值又被称为编译时值,用常量定义的变量又被称为编译时常量,值得注意的是:这个常量是不可变的,也就是一旦被定义好之后不可以对其进行修改。

下面的代码片段展示了如何使用常量去定义这个编译时常量。

const  string  connectionString =,“Specify  your  database  connection  string 这里!”

一定要记住,常量必须在定义的时候给它赋值,同时也要记住不可以用常量定义对象类型,因为它只支持c#的基元类型,比如:整数,浮点数、字符、布尔值和字符串,接下来通过一个例子来了解以下为啥不能用对象,考虑下面类的作者。

, public  class 作者   ,{   public 才能int  Id {组,得到,,,}   public 才能string  FirstName {组,得到,,,}   public 才能string  LastName {组,得到,,,}   public 才能string  Address {组,得到,,,}   以前,}

如果用常量将作者定义为常量的话,编译器肯定是不同意的,如下图:

常量、只读的、静态三者怎么在c#中使用“> </p> <h3>理解只读的<br/> </h3> <p>只读关键词只读的常用于将一个变量或者一个对象设置为只读、意味着这个变量或者对象只能在类作用域或者构造函数中被第一次赋值,一旦被赋值后,你就不能通过任何方法对其修改,除了构造函数,接下来看一个例子,考虑下面的DbManager类。</p> <pre类=, public  class  DbManager   ,{   public 才能readonly  string  connectionString =癝pecify  your  database  connection  string 这里!”;   ,,   public 才能;DbManager ()   {才能   ,,connectionString =,“你还要reassign  a  value 这里!”;   ,,}   ,,   public 才能;void 重新分配()   {才能   ,,connectionString =,“却;能够is  not  allowed";   ,,}   以前,}

上面的代码会编译报错,错误信息如下:

常量、只读的、静态三者怎么在c#中使用“> </p> <h3>理解静态<br/> </h3> <p>静态关键词可用于变量,方法,对象。不过值得注意的是:类中静态的成员只归属于类,而不是类实例,换句话说,可以直接使用类名来访问静态属性或者静态方法,而不是通过类实例访问,接下来考虑一下公用事业类。</p> <pre类=, public  class 效用   ,{   public 才能static  void  SomeMethod ()   {才能   ,,//Write  your  code 这里   ,,}   以前,}

你不可以通过类实例去调用,否则编译器是不会放行的,如下图:

常量、只读的、静态三者怎么在c#中使用“> </p> <p>正确的做法如下:</p> <pre类= Utility.SomeMethod ();

同样的规则也适用于类中的属性和字段,要想引用类中的静态成员,参考如下语法:

ClassName.Member;

或者

ClassName.Member ();

构造函数也可以是静态的,它通常用于初始化类中的静态成员,但要注意静态构造函数中不接受任何参数。

总结

使用常量,只读的,静态的一些经验法则如下:

const

如果变量在应用程序的生命周期内不会被改变,请用常量。

只读的

如果你不确定这个变量后期是否要被修改,但又不希望其他的类碰它,请用只读的。

静态

如果你希望类成员是属于类型而不是类型的实例,请用静态的。

常量、只读的、静态三者怎么在c#中使用