public interface ILovable<T> where T : IEquatable<T>
{
T Care(T t);
}
public class Me : ILovable<int>
{
public int Care(int i)
{
return i;
}
}
上記があるとしましょう。以下の関数は失敗します:
private static void Colour<T>(ILovable<T> me) where T : IEquatable<T>
{
var z = me.Care(1); //cannot convert from 'int' to 'T'
}
上記のコードの失敗は何ですか?ILovable<T>
をCare
取り込む機能がT
ありIEquatable<T>
ます。上記の関数では、同じ関数を呼び出して、型であるものCare
を渡します。やっぱりです。T
int
int
IEquatable<int>
私は何が間違っているのですか?それを修正するための回避策はありますか?