ジェネリックを使用する次の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
コンパイルされます。なぜこの振る舞いをするのですか?