2011-02-07 3 views

답변

11

당신이로 x+1를 사용할 때 그것은 확실히 모호한 아니다 아니다 첫 번째 인수의 형식은 int입니다. 첫 번째 경우, 당신은 암시 적으로 int로 변환 할 수있는 byte 인수가

(가. C#에서 더 byte+byte 연산자 없다),하지만 정수 리터럴 인수입니다. 인수는 int 유형이지만 암시 적 상수 표현식은 byte으로 변환됩니다 (6.1.9 절 참조). 따라서 Min(byte, byte)Min(int, int)이 모두 적용 가능한 오버로드이지만 각 매개 변수에 대해 (사용 가능한 변환으로 인해) 각각 "선호"되므로 모호합니다. 당신이 유형 int의 "정상적인"표현이있는 경우 (상수 표현식 반대)

참고 모호성이 사라지고 : 마찬가지로

byte x = 200; 
int y = 10; 
int z = Math.Min(x, y); // Uses Math.Min(int, int) 

정상 byte 인수 :

byte x = 200; 
byte y = 10; 
byte z = Math.Min(x, y); // Uses Math.Min(byte, byte) 

또는 전환을 강제로 수행 할 수 있습니다.

byte x = 200; 
byte z = Math.Min(x, (byte)10); // Uses Math.Min(byte, byte) 

byte a = 200; 
int b = Math.Min((int) a, 10); // Uses Math.Min(int, int) 
+0

감사합니다. 따라서 int로 캐스트해야합니다 – lojol

+0

@lojol : 'int' 버전을 사용하려면 yes를 사용하십시오. –

+0

나는 바이트 + 바이트를 사용할 수 없다는 것을 몰랐다. 흥미 롭다, 고마워! – lojol

4

첫 번째 경우 Min(byte,byte)Min(int,int) 중에서 선택할 수 없다고 가정합니다. int에서 byte항상 결과에

운영, 그래서 x+1int과 모호함이 없다 - 그것은 Min(int,int)를 선택할 수 있습니다.