Genéricos usados em struct vs class
Suponha que temos os seguintesstruct
definição que usa genéricos:
public struct Foo<T>
{
public T First;
public T Second;
public Foo(T first)
{
this.First = first;
}
}
O compilador diz
'Foo.Second' deve ser totalmente atribuído antes que o controle seja retornado ao chamador
No entanto, seFoo
é uma classe, então compila com sucesso.
public class Foo<T>
{
public T First;
public T Second;
public Foo(T first)
{
this.First = first;
}
}
Por quê? Por que o compilador os trata de maneira diferente? Além disso, se nenhum construtor for definido no primeiroFoo
então compila. Por que esse comportamento?