次のような暗黙の演算子を使用することに何か問題がありますか?
//linqpad c# program example
void Main()
{
var testObject = new MyClass<int>() { Value = 1 };
var add = 10 + testObject; //implicit conversion to int here
add.Dump(); // 11
}
class MyClass<T>
{
public T Value { get; set; }
public static implicit operator T (MyClass<T> myClassToConvert)
{
return myClassToConvert.Value;
}
}
このようにオブジェクトのインスタンスを値型として扱うことができると思っていたのですが、この例を見たことがないので、誰かが指摘できるようなことをしない理由があるのではないかと思いました。
私の実際のコードでは、これをデータ抽象化レイヤーの一部として実行することを考えていました。これにより、基になるデータを説明する情報を含むオブジェクトを返すことができますが、ロジックコードは、必要なときにそれを値型として扱うことができます。は値であり、同時にすべてを適切に保ち、ジェネリックスでタイプセーフにします。