【发布时间】:2010-05-08 09:02:34
【问题描述】:
我有一个自定义结构:
struct A
{
public int y;
}
具有空构造函数的自定义类:
class B
{
public A a;
public B()
{
}
}
这里是主要的:
static void Main(string[] args)
{
B b = new B();
b.a.y = 5;//No runtime errors!
Console.WriteLine(b.a.y);
}
当我运行上面的程序时,它没有给我任何错误,虽然我没有在 B 类构造函数中初始化 struct A..'a=new A();'
【问题讨论】:
-
我对这个问题感到困惑。为什么会出现 runtime 错误?我可以理解为什么您会期望出现 compile-time 错误,但为什么会出现 runtime 错误呢?我怀疑您认为运行时错误在这里是合适的,这是对“值类型”含义的深刻误解的症状。你能解释一下为什么你认为这应该是一个运行时,而不是编译时错误吗?如果字段“a”的类型是“double”而不是结构 A,您是否同样会期望出现运行时错误?为什么或为什么不?
标签: c# class constructor struct initialization