0

戻り型を自分で定義したオブジェクトまたは1つのカスタム型に変換しようとすると、暗黙の演算子で問題が発生するのはなぜですか?

intこのような単純な型を変換して返そうとしても問題ありません

public static implicit operator int(MyClass a)
        {
            return 123;
        }

ただし、タイプをオブジェクトまたはカスタムタイプに変換しようとすると、エラーが発生します。たとえば、次のようなものがある場合、「System.Objectへのユーザー定義の変換」というコンパイル時エラーが発生します。

public static implicit operator object(MyClass a)
{
   return new {};
}

これがある場合、同じ種類のエラーが発生します。

public static implicit operator CustomTestObject(MyClass a)
{
   return new CustomTestObject();
}

暗黙の演算子を使用するときに、それを独自のカスタム定義型に変換して返すにはどうすればよいですか?

4

1 に答える 1

5

独自の基本クラスの1つへの暗黙的な変換を宣言することはできません。System.Object常に(直接または間接の)基本クラスです。継承を通じて、基本クラスへの暗黙の変換がすでにあります。では、どうすれば2つの暗黙的な変換ができるのでしょうか。C#仕様には、これを禁止する良い理由があります。

于 2012-12-30T21:13:49.363 に答える