2011-08-16 3 views
0

클래스에 두 개의 문자열이 있습니다.참조 할 때 값을 반환하는 클래스

개체를 참조 할 때 하나의 문자열을 반환하고 싶습니다.

코드 스 니펫 :

public class ABC 
{ 
    public string A = "first"; 
    public string B = "second"; 
} 

public class useABC 
{ 
    ABC obj; 

    if(obj == "first") 
     Console.writeLine("True"); 
} 

은 내가 내 ABC 수업 시간에 할 일은 "참"인쇄 할 수 있습니다.

미리 감사드립니다.

+0

어떤 객체에 대해 참조한다? 'ABC','A','AB' 또는'useABC'? 그리고 참고로, 당신은 무엇을 의미합니까? – ja72

답변

1

암시 적 또는 명시 적 연산자를 재정의 할 수 있습니다. 다음은 MSDN article입니다.

너무 많은 암시적인 오버로드는 혼란 스럽거나 사용하기 어려운 클래스로 이어질 수 있습니다.

0

IEquatable<string>을 구현하면 ABC.Equals("first")을 작성할 수 있습니다.

public class ABS : IEquatable<string> 
{ 
    string A, B; 
    public bool Equals(string other) 
    { 
     return A.Equals(other) || B.Equals(other); 
    } 
} 

이후

if(ABC.Equals("first")) { Console.WriteLine("true"); } 

그런 다음 당신은 또한 == 연산자를 대체 할 수 있지만, 클래스 형 사용하지 않는 것이 좋습니다. string과 마찬가지로 .Equals() 메서드를 사용하여 동등 함을 확인하는 것이 좋습니다. 또는 문자열이 A 또는 B인지 확인하려면 bool Contains(string other) 메서드를 추가하면됩니다.

1

평등 연산자 (==)를 재정의하려고합니다. 다음과 같이하십시오. 두 명령 모두에 과부하가 걸려 있음을 기억하십시오. 또한 컴파일러는 동시에 과부하를 요구합니다! =.

public class ABS 
{ 
    public string A; 
    public string B; 

    public static bool operator ==(ABS obj, string val){return obj.A == val;} 
    public static bool operator !=(ABS obj, string val){return obj.A != val;} 
    public static bool operator ==(string val, ABS obj){return obj.A == val;} 
    public static bool operator !=(string val, ABS obj){return obj.A != val;} 
} 

다음 코드는 두 표현식에 대해 true를 반환

ABS abs = new ABS(); 
abs.A = "What?"; 

Assert.IsTrue(abs == "What?"); // true 
Assert.IsTrue("What?" == abs); // true 
관련 문제