내가 Get<int>(Stat);
또는암시 적으로 'T'가
Get<string>(Name);
하지만 얻을 컴파일 할 때 호출 할 수 있습니다에 유형 '지능'을 변환 할 수 없습니다 :
에 유형 'INT'을 변환 할 수 없습니다를암시 적으로 'T'
의 경우와 동일합니다.
public T Get<T>(Stats type) where T : IConvertible
{
if (typeof(T) == typeof(int))
{
int t = Convert.ToInt16(PlayerStats[type]);
return t;
}
if (typeof(T) == typeof(string))
{
string t = PlayerStats[type].ToString();
return t;
}
}
블록이 T가 int임을 확인한 것 같습니다. 블록 내에서 T가 int이고 int를 T로 암시 적으로 변환 할 수 있어야합니다.하지만 컴파일러는 해당 추론을 따르지 않으므로, 일반적으로 T는 int에서 파생되지 않으므로 암시 적 변환을 허용하지 않습니다. 컴파일러가 지원한다면 컴파일러는 검증 할 수 없으므로 컴파일 된 어셈블리는 검증 할 수 없습니다. – JGWeissman