C#的readonly, static, 和 const

一、readonly, static, 和 const 

readonlystatic, 和 const 是 C# 中用于修饰字段(成员变量)的关键字,它们有不同的含义和用法。

  1. readonlyreadonly 修饰的字段表示只读字段,它的值只能在声明时或在构造函数中进行初始化,之后不能再修改。每个实例都有自己的 readonly 字段副本。

  2. staticstatic 修饰的字段表示静态字段,它属于类而不是类的实例。静态字段在所有类的实例之间共享,只有一个副本。它的值在类的生命周期内保持不变,可以在任何时候访问,无需创建类的实例。

  3. constconst 修饰的字段表示常量,它的值在编译时确定,并且不能在运行时修改。常量是隐式静态的,它们属于类而不是类的实例。常量在整个应用程序中都是全局可见的。

总结:

  • readonly 字段是只读的,每个实例都有自己的副本。
  • static 字段是静态的,属于类而不是实例,所有实例共享同一个副本。
  • const 字段是常量,属于类而不是实例,值在编译时确定,全局可见。

在选择使用哪个关键字时,需要根据具体的需求和场景来决定。如果需要在实例之间共享值并且不希望其被修改,可以使用 static 字段。如果需要每个实例都有自己的只读副本,可以使用 readonly 字段。如果需要定义一个在编译时确定且不可修改的常量,可以使用 const 字段。

 

二、static

1.static意思是静态,可以修饰类、字段、属性、方法
2.标记为static的就不用创建实例对象调用了,可以通过类名直接点出来
3.static三种用法:
4.用于变量前,表示每次重新使用该变量所在方法、类或自定义类时,变量的值为程序这次运行最后一次为变量赋值时的值,这个方法称为静态函数:

private void s()
{
  static int a=1;
  a++;
}

 


方法第一次调用结束后a在内存内值为2;
方法第一次调用结束后a在内存内值为3;
5.在方法(函数)前用static修饰,表示此方法为所在类或所在自定义类所有,而不是这个类的实例所有,这个方法称为静态方法:
情况一:非静态方法:

class t
{
t(....(参数,下面同))
{
~~~~(方法内容,下面同)
}
void s(....)
{
~~~~
}
}

 


当你在其他方法里调用这个类中的方法s,则需先声明这个类的变量如:t sd = new t(....);
再在t里调用方法:sd.s(....);
情况2:静态方法:

class t
{
t(....(参数,下面同))
{
~~~~(方法内容,下面同)
}
static void s(....)
{
~~~~
}
}

 


7.当你在其他方法里调用这个类中的方法s,则不用先声明这个类的变量如直接调用方法:t.s(....);
8.用于class前,说明此类型无法新建实例,简单点说这个类型的方法全是静态方法,这个类里的非静态方法是不能使用的,这个类型称为静态类.
比如C#控制台操作的Cancle类里面的成员就被标记为静态的,可以直接用Concle.直接点出来使用。
9.如果没有标记为静态就要通过创建实例对象来调用,比如说动态字符串StringBuilder就要new一个实例来调用

StringBuilder sb =new StringBuilder();
sb.xxx(); //xxx是方法名
static class t
{
~~~~
}
~~~~
class d
{
~~~~
void f(....)
{
~~~~
t v = new t();//此时程序会出现错误
}

 

posted @ 2017-03-13 16:13  卖雨伞的小男孩  阅读(670)  评论(0编辑  收藏  举报