类
class myclass
{
int x = 10;
int y = this.x;
}
编译以后是不是变成下面的形式了啊
class myclass
{
int x;
int y;
myclass()//构造函数
{
x = 10;
y = this.x;
}
}
如有错误,请指正
class myclass
{
int x = 10;
int y = this.x;
}
编译以后是不是变成下面的形式了啊
class myclass
{
int x;
int y;
myclass()//构造函数
{
x = 10;
y = this.x;
}
}
如有错误,请指正
解决方案 »
- c#求和问题
- 读取mysql大对象报错(断言错误)的问题
- 在winform中怎么根据增删改查分配用户权限
- 子表与主表关联
- xmlhttp.send("")异常,C#开发
- 关于 ,,Request.ServerVariables["HTTP_ACCEPT"]
- 读取资源文件“c:\documents and settings\administrator\my documents\visual studio projects\wshuan\obj\debug\wshuan.form2.resource
- SQL2000+SP4的怪问题:RaisError('触发错误。',16,1)在客户端没反映,新建一数据库就好了,后来又不行了。
- Visual C# .NET 2003的改变
- SharpPcap敲打灵魂的抓包乱码拷问
- listview中的checkbox可不可以设enabled=false
- 哪位仁兄能帮忙给做一下这这个窗体,谢谢!!
{
int x = 10;
int y = this.x;
}這樣能編譯通過嗎?
class myclass
{
int x = 10;
int y = this.x;
}是不行,
所有初始化操作只能在构造函数里面才可以。
是不能通过啊,您能说说为什么不能通过啊,我发这个贴的最终目的就是要各位高手帮我解决这个
问题的(我要知道原理)。
但由于不能保证所有field的初始化顺序,C#编译器禁止在一个field的初始化语句中直接引用另一个field的值但是属性(property)可以,因为它本质上是方法,不存在这个问题
一个类的执行的循序应该是:
分配内存-》初始化默认值-》调用构造器
所以,应该不是未分配内存引起的
初始化循序是无所谓的,
因为“y = this.x”是在x和y都在
初始化默认值(0)以后执行的,
所以他们的循序无所谓(至少在编译的时候不会出错),
如果x比y先初始化,y就得到10
反之,y就得到x的默认初始化值0;
int x = y;
int y = 5;这样如果通过编译并执行,x的值应该是0
但是你没仔细想的话,或者一个新手,肯定会被迷惑,以为应该是5所以C#编译器干脆选择了视这种代码为错误,我想这是明智的选择