readonly,const,static的区别

readonly是可以运行时赋值,const则必须在声明时赋值,二者都是赋值后就不能再改变。

readonly所谓运行时赋值是指可以在声明时或者构造方法内进行初始化,在构造方法内赋值时可以使每个实例拥有不同的值,而const因为是声明时赋值,所以内容基本一致了。

const在赋值后仅能通过类调用,而无法通过实例去调用。

readonly在赋值后仅能通过实例去调用,而无法通过类调用

static是在类内共用同一个存储空间,属于类的属性而不是实例的属性,被static标识的类、方法、属性无法被实例化,只能直接被类本身或者类里的方法调用。所以使用static的字段,能在任意时间做修改,而且调用的实例和类对应的字段都会发生改变。

public class Person
{
        public string name {get;set;}
        public string sex {get;set;}
        public string birthday {get;set;}
        public const string con = "123";
        public readonly string red;
        public static string sta;
        public Person()
        {
           red = "red";
        }
        public void ChangeSta(string str)
        {
            sta = str;
            Console.WriteLine(sta);
        }
}

public void main()
{
    Person zhang = new Person();
    Person li = new Person();
    //const在赋值后仅能通过类调用,而无法通过实例去调用。
    Console.WriteLine(zhang.con).    //error
    Console.WriteLine(Person.con).    //"123"
    //const无法在运行时进行修改
    Person.con = "134";                //error
    //readonly在赋值后仅能通过实例去调用,而无法通过类调用
    Console.WriteLine(t1.red);         //"red"
    Console.WriteLine(Person.red);     //error
    //readonly无法在运行时进行修改
    Person.red = "person";             //error
    Person.sta = "1231";
    //实例无法直接对static的属性进行修改,但是可以通过类的方法对其修改
    zhang.sta="zhang";                    //error
    zhang.ChangeSta("zhang");            //"zhang"
    li.ChangeSta("li");                //"li"
    Console.WriteLine(Person.sta);    //"li"
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值