:왜이 코드를 캐스트로 묶어야합니까? 나는 다음과 같은 몇 가지 코드가있는 경우
short myShortA = 54;
short myShortB = 12;
short myShortC = (short)(myShortA - myShortB);
두 피연산자가되어 반바지를하고 짧은에 무슨 왜 나는 그것을 캐스팅해야합니까?
:왜이 코드를 캐스트로 묶어야합니까? 나는 다음과 같은 몇 가지 코드가있는 경우
short myShortA = 54;
short myShortB = 12;
short myShortC = (short)(myShortA - myShortB);
두 피연산자가되어 반바지를하고 짧은에 무슨 왜 나는 그것을 캐스팅해야합니까?
"짧은 짧은"연산자가 없기 때문에. 두 피연산자 모두 int로 승격됩니다. 는 C# 3 사양의 섹션 7.7.5에서
:
미리 정의 된 빼기 연산자 는 다음과 같습니다. 연산자 모두 은 x에서 y를 뺍니다.
정수 감산 : 체크 문맥에서
int operator –(int x, int y); uint operator –(uint x, uint y); long operator –(long x, long y); ulong operator –(ulong x, ulong y);
차이가 결과 유형의 범위를 벗어나는 경우 는 System.OverflowException이가 발생된다. 다른 사람이 대답했다
public static class NumericExtensions { public static short Subtract(this short target, short value) { return (short)(target - value); } }
:
(. 그리고이 떠 점 빼기)
조금 더 쉽게 일을하게하려면, 당신은 단순히이 같은 확장 방법을 쓸 수 귀하의 질문 ... :)
경우에만 그들이 확장 연산자를 허용 ...;) – RCIX
에릭 Lippert이 (Enums에 관해서) http://blogs.msdn.com/ericlippert/archive/2005/10/19/fyi-c-2-0-has-a-breaking-change-in-enum-subtraction.aspx – jasonh
자주 자주했습니다. 몇 가지 언어로 된이 ...하지만 얼마나 많은 사람들이 그 중 일부를 남용 할 것인지 기억합니다. –