なぜこのようなメソッドでは、戻り値の型を明示的にキャストする必要がありますか?制約付きの戻り値の型に明示的キャストが必要なのはなぜですか?
public T Test<T>()
where T : Response
{
var ret = new Response();
return ret; // Explicit cast needed here
}
制約を明示的にTが応答するかの子であることを述べ、その種類の多型を返すキャストせずにこれを許可する、またはそう私は思ったはずです。
as T
を追加すると、コンパイルが成功します。
'T' _is_' Response'とサブタイプでない限り、実行時にキャストが失敗することに注意してください。 –