C#基础readonly与const

王朝学院·作者佚名  2016-08-28
窄屏简体版  字體: 小  |  中  |  大  |  超大  

readonly 与 const

readonly是运行时常量,const是编译期常量(在编译过程中已经把使用该值的都用值替代,不分配内存)readonly灵活性高,const效率高

readonly 可以修饰任何类型的常量,包括自定义类,const则只能修饰基元类型,枚举类型及字符串(const MyClass myClass 则错误写法)

用const修饰的则不能加static 修饰,编译期本来就是静态常量

readonly 可以在构造函数内对其多次赋值

public class Mouse

{

public readonly int ReadOnlyValue = 100;

public Mouse(int readonlyvalue)

{

ReadOnlyValue = readonlyvalue;//是正确的写法,可以多次赋值

}

}

Mouse mouse = new Mouse(300);//正确

mouse.ReadOnlyValue = 400;//错误

public class Mouse

{

public readonly Cat ReadOnlyValue = new Cat() { catValue = 100 };

public Mouse(Cat cat)

{

ReadOnlyValue = cat;

}

}

readonly对引用类型修饰的话,是不能再指向其他的实例,但可以对指向的引用实例值时可以改变的

Mouse mouse = new Mouse(new Cat() { catValue = 300 });

mouse.ReadOnlyValue.catValue = 400;//正确

mouse.ReadOnlyValue = new Cat() { catValue = 500 };//错误

Cat cat = new Cat() { catValue = 500 };

mouse.ReadOnlyValue.catValue = cat.catValue;//正确

 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
© 2005- 王朝網路 版權所有 導航