假设我们有以下struct
使用泛型的定义:
public struct Foo<T>
{
public T First;
public T Second;
public Foo(T first)
{
this.First = first;
}
}
编译器说
在将控制权返回给调用者之前,必须完全分配“Foo.Second”
但是,如果Foo
是一个类,那么它编译成功。
public class Foo<T>
{
public T First;
public T Second;
public Foo(T first)
{
this.First = first;
}
}
为什么?为什么编译器会以不同的方式对待它们?此外,如果第一个没有定义构造函数,Foo
那么它会编译。为什么会有这种行为?