5

Messageこれらの演算子をオーバーロードするというクラスがあります。

public static bool operator ==(Message left, Message right)
public static bool operator !=(Message left, Message right)

public static bool operator ==(Message left, string right)
public static bool operator !=(Message left, string right)

public static bool operator ==(string left, Message right)
public static bool operator !=(string left, Message right)

==と演算子で、と!=以外の型の参照を比較し続けてほしいのですが、StringMessage

var message = new Message();
var isNull = message == null;

私にこれを与えます:

次のメソッドまたはプロパティ間で呼び出しがあいまいです:'Message.operator ==(Message、Message)'と'Message.operator ==(Message、string)'

Messageとは両方ともString参照型であり、どちらも参照型である可能性があるためですが、メッセージがnullかどうかを確認するためにopreatornullを使用できるようにしたいと思います。==

==null値でオーバーロードできますか?私はそれをオーバーロードしてオーバーロードobjectを呼び出してみobject.ReferenceEquals(object, object)ましたが、それは役に立ちませんでした。

4

1 に答える 1

6

の実装を提供しoperator ==(Message left, object right)、タイプをチェックして、rightnull、文字列、またはメッセージのいずれであるかを確認します。

または、文字列を受け取るMessageの暗黙的なコンストラクターを定義します。例については、演算子のオーバーロードとさまざまなタイプを参照してください。

于 2012-09-24T07:06:18.607 に答える