2
轉換錯誤,我得到了下面的代碼,這讓我編譯錯誤:與一般的協方差
cannot convert from 'UserQuery.SomeClass<int>' to UserQuery.Interface<System.IConvertible>'
代碼:
void Main()
{
List<Interface<IConvertible>> values = new List<Interface<IConvertible>>();
values.Add(new SomeClass<int>() {Value = 50 });
}
interface Interface<out T> where T : IConvertible
{
T Value { get; }
}
class SomeClass<T> : Interface<T> where T : IConvertible
{
public T Value { get; set; }
}
但是,嘗試添加SomeClass<string>
工作正常。
values.Add(new SomeClass<string>() {Value = "50" });
誰能請解釋我爲什麼字符串做到這一點,但不是INT也不雙重等等...