2

私が本当に達成したいこと: のグローバル エイリアス名を導入しobjectます。

myclassC# にはグローバル エイリアスがないため、すべてのオブジェクトが暗黙的に変換可能な別のクラスを提供することで回避したいと考えています。

myclass foo () { return new object(); } // should be ok
myclass bar () { return "bla"; } // should be ok

方法?

(変換演算子:

    public static implicit operator myclass(object o)
    {
        return new given();
    }

コンパイラエラーcs0553を出力するだけです)

4

1 に答える 1

2

まあ、あなたはそれをすることはできません。C# 4 仕様のセクション 10.10.3 から:

Sクラスまたは構造体は、次のすべてに該当する場合にのみ、ソース型からターゲット型への変換を宣言できTます。

  • ...
  • ユーザー定義の変換を除いて、StoTまたは fromTへの変換は存在しません。S

あなたの場合はそうではないため、エラーが発生します。

なぜこれをやりたいのかは述べていませんが(「グローバルエイリアスなし」と述べていますが、何を達成しようとしているのかは明確ではありません)、これを行うことはできません. コンストラクターまたは静的メソッドを作成してクラスのインスタンスを作成することはできますが、演算子ではできません。

于 2013-07-03T22:44:53.833 に答える