に型 'のInt' を変換できません。しかし、コンパイルするとき、私は得る:は、暗黙のうちに、私は<code>Get<int>(Stat);</code>または<code>Get<string>(Name);</code></p> <p>を呼び出すことができます 'T'
に型 '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型に変換することができるはずです。しかし、コンパイラはその推論に従うように設計されていないので、Tは、int型であることを確認することを考えています一般的にTはintから派生しないので、暗黙の変換は許可されません。 (コンパイラがそれをサポートしている場合と、検証者はいないだろうので、コンパイルされたアセンブリが検証できないであろう。) – JGWeissman