为什么readonly 的变量可以在构造函数中赋值两次!
如下:
class MyClass
{
public readonly int a=44;
public MyClass()
{
a = 1;
a = 2;
}
}
readonly常量是运行时常量,也就是说,在运行时赋值后就不能再修改了,构造函数不就是运行时执行的么,为什么可以赋值两次!
另外,构造函数中给变量赋值到底是算 赋值呢还是算初始化呢,从构造函数中给变量赋值这点出发,如何看待赋值和初始化的区别呢!
如下:
class MyClass
{
public readonly int a=44;
public MyClass()
{
a = 1;
a = 2;
}
}
readonly常量是运行时常量,也就是说,在运行时赋值后就不能再修改了,构造函数不就是运行时执行的么,为什么可以赋值两次!
另外,构造函数中给变量赋值到底是算 赋值呢还是算初始化呢,从构造函数中给变量赋值这点出发,如何看待赋值和初始化的区别呢!
解决方案 »
- 重写.net的控件,怎么写?
- 教你如何给C#.NET程序打包
- C#多窗体的管理(非MDI)
- winform dataset.xsd文件 的 dataset ds, ds.ReadXml(xmlFile);为什么 没值,而new一个 DataSet dss=new DataSet();dss.ReadXml(xmlFile);则有值?
- 有兴趣一起开发电子地图+视频聊天(待选)的请进(深圳)
- TextBox 屏蔽字符和汉字问题和复制粘贴问题
- 在建立与服务器的连接时出错。在连接到 SQL Server 2005 时,在默认的设置下 SQL Server 不允许进行远程连接可能会导致此失败。 (provider: 命名管道提供程序, erro
- MSMQ Development
- 用了线程池,但程序效率并没有提升
- DataTable接收Sql返回的数据顺序是乱的?!
- 我在windows 2008 r2上,使用OleDB方式访问oracle时,提示:未在本地计算机上注册“OraOleDB.Oracle”提供程序
- C# 中 TreeView 中一个相关问题
它限制了你在其它地方对它的赋值。
public MyClass()
{ a = 1;
a = 2;
}
应该是赋值,不是初始化吧!
const 字段只能在该字段的声明中初始化
readonly 字段可以在声明或构造函数中初始化
public MyClass()
{ a = 1;
a = 2;
}
中,a是叫赋值,还是初始化!
{
new object();
}
初始化