私は例で私の質問を説明しようとします:
class V<T>
{
public readonly Func<T> Get;
public readonly bool IsConstant;
V(Func<T> get, bool isConstant)
{
Get = get;
IsConstant = isConstant;
}
public static implicit operator V<T>(T value)
{
return new V<T>(() => value, true);
}
public static implicit operator V<T>(Func<T> getter)
{
return new V<T>(getter, false);
}
}
void DoSomething<T>(V<T> v)
{
//...
}
void Main()
{
DoSomething<string>("test"); // (1) type inference is not working
DoSomething<string>((V<string>)(() => "test")); // (2) implicit operator does not work
}
この方法Main
では、次の2つの状況があります。
<string>
メソッドの総称引数を明示的に指定する必要がありますDoSomething
。- ここで、明示的なキャストを追加する必要があり
(V<string>)
ます。暗黙的な演算子は機能していないようです。
なぜこれが必要なのですか?コンパイラが検討している代替案は何ですか?正しい方法を選択できませんか?