2009-12-15 11 views
1

안녕하세요 저는 Expression.GreaterThanOrEqual (왼쪽, 오른쪽), 그래서 같은 데이터를 문자열 또는 도메인 유형을 평가하려는 : "나는 GreaterThanOrEqual 연산자를 사용할 때 너무덮어 쓰기 이항 연산자

002-1400 

> = ", 나는 002-1400 "is greater or equal than" 002-1400, 002-1399, 002-1398 ...라고 말할 수있을 것입니다. 그래서 입력 매개 변수를 통해 비교하기 위해 일부 그리드 행을 가지고 놀 수 있습니다.

희망은

감사합니다, 연산자 오버로딩에 대한

답변

3

String 클래스에 연산자를 정의 할 수 없습니다. 그러나 자신이 작성한 유형을 작성하고 원하는 방식으로 동등한 관계를 정의 할 수 있습니다.

+0

예를 들어 MyExpressions.GreaterThanOrEqual (p1, p2)을 만들고 System.Linq.Expression에서 확장해야합니다. 맞습니까? –

0

operator overloading을 사용할 수 있습니다. 튜토리얼은이 링크를 참조하십시오.

1

당신은 이런 식으로 뭔가를 오버라이드 (override) 할 :

public static operator >=(Foo foo1, Foo foo2) 
{ 
    //code here... 
} 
public static operator ==(Foo foo1, Foo foo2) 
{ 
    return foo1.Equals(foo2); 
} 
//etc... don't forget to implement Equals and GetHashCode! 

이 해시 코드 실행 아이디어를 this question를 참조하십시오.

편집 : Ed Swangren이 맞습니다. 내장 클래스의 연산자를 재정의 할 수 없습니다. 그러나 자신의 클래스에서 재정의 할 수 있습니다!