次のスニペットのいずれもコンパイルされない理由を頭に入れて問題を解決しています。`this`をジェネリック型にキャストできないのはなぜですか?
Visual Studioのフラグを持つ最初の1:
は 'T'
キャストに型 'SomeType' を変換できませんが冗長です。 "冗長" のキャストを削除
using System;
public class SomeClass {
public T Coerce<T>() {
if (typeof(T) == typeof(SomeClass))
return (T)this; // <- Error CS0030
else throw new InvalidCastException();
}
}
は、しかし、ちょうどにエラーを変更します。
が暗黙的にタイプを変換できません 'SomeOtherClass' 'T'
using System;
public class SomeOtherClass {
public T Coerce<T>() {
if (typeof(T) == typeof(SomeOtherClass))
return this; // <- Error CS0029
else throw new InvalidCastException();
}
}
ここで*達成しようとしていることを説明したなら、おそらく助けになるでしょう。 –
'return(T)(オブジェクト)this;' – PetSerAl
なぜあなたはこれをしたいですか? –