(a=1&a=2&a=3) 연산자가 과부하될 때 항상 진짜로 변하는 C#편

6573 단어 StackOverflowC#
(a=1&a=2&a=3) 항상 진짜인가요? 화제가 된 것 같으니 C#로 풀어보자.
Getter에서++로 사용하면 빨라요!
만약... 라고 생각한다면 이전 사람 있기 때문에 다른 해석을 목표로 한다.
연산자 과부하
C# 연산자의 과부하를 사용할 수도 있습니다.
어쨌든 다음 반부터 만들어.
MagicNumber
public class MagicNumber
{
    public MagicNumber(int n)
    {
        Value = n;
    }

    public int Value { get; set; }
}
이 매직넘버에서 자주 진짜가 되는 == 연산자를 실시하면 방법이 있을 거야.
연산자는 public static int operator +(MagicNumber a, int b)의 형식으로 실현할 수 있다.
그러나 == 연산자는 단독으로 실현할 수 없다.
!= 연산자도 함께 실시해야 한다.
MagicNumber
public class MagicNumber
{
    public MagicNumber(int n)
    {
        Value = n;
    }

    public int Value { get; set; }

    public static bool operator ==(MagicNumber a, int b) { return true; }

    public static bool operator !=(MagicNumber x, int y) { return true; }
}
이렇게 하면 ==!=든 항상 진짜 연산자를 되돌려주는 연산자를 만들 수 있다.
말하고 싶지만... 이러다 경고 나올거야.
== 연산자와 != 연산자Equals()GetHashCode()를 실현하는 것을 권장합니다.
그래서 결국 이렇게 됐어요.
MagicNumber
public class MagicNumber
{
    public MagicNumber(int n)
    {
        Value = n;
    }

    public int Value { get; set; }

    public static bool operator ==(MagicNumber a, int b) { return true; }

    public static bool operator !=(MagicNumber x, int y) { return true; }

    public override bool Equals(System.Object obj) { return true; }

    public override int GetHashCode() { return Value ^ Value; }
}

잘 됐다.
참고 자료
연산자 과부하(++C+;/비행 C 미확인)
Equals() 및 연산자== 과부하 가이드(C# 프로그래밍 가이드)

좋은 웹페이지 즐겨찾기