2

==C#では、、=<または>ユーザー定義オブジェクトなどの比較演算子をオーバーロードする方法はありますか?

"string"=="string"yoが代わりに書くことができる方法に似ています"string".Equals("string")

CompareTo関数とEquals関数を定義できることは知っていますが、ショートカットがあるかどうか疑問に思いました。

4

2 に答える 2

5

==目的のシグニチャで次のシグネチャを使用して関数を実装することにより、C#の演算子をオーバーライドできますclass

public static bool operator ==(YourClass a, YourClass b) { }

<=同じことが演算子にも当てはまります>

オーバーライドすることにより、==もオーバーライドする必要があり、および関数!=をオーバーロードすることをお勧めします。EqualsGetHashcode

詳細については、以下をお読みください。

演算子のオーバーロードチュートリアル

Equals()とOperator ==をオーバーロードするためのガイドライン(C#プログラミングガイド)

于 2012-11-15T21:45:32.503 に答える
4

簡単な例:

class Foo
{
    public int Id { get; set; }

    public static bool operator ==(Foo first, Foo second)
    {
        return first.Id == second.Id;
    }

    public static bool operator !=(Foo first, Foo second)
    {
        return first.Id != second.Id;
    }
}

EqualsとGetHashCodeもオーバーライドする必要があります

于 2012-11-15T21:51:41.300 に答える