C#의 식
업데이트: 2007년 11월
이 항목은 다음 언어에 적용됩니다.
Edition |
Visual Basic |
C# |
C++ |
Web Developer |
---|---|---|---|---|
Express |
||||
Standard |
||||
Pro 및 Team |
표의 범례:
해당 |
|
해당 없음 |
|
명령은 기본적으로 숨겨져 있습니다. |
관리되는 식 계산기는 C#으로 작성된 대부분의 식을 계산합니다. 다음 단원에서는 관련 정보 및 지원되지 않는 일부 식 형식에 대해 설명합니다.
식별자 및 형식
메서드 실행
연산자
오버로드된 연산자
문자열
캐스트
typeof 및 sizeof 연산자
속성 확인
식 계산기는 public, protected, internal 및 private 액세스 한정자를 무시합니다. 예를 들어, 조사식 창에서 private 메서드를 호출할 수 있습니다. 식 계산기는 액세스 한정자를 무시하므로 예기치 않은 로드가 초래될 수 있습니다.
식 계산기는 실행 중인 코드가 안전한지 안전하지 않은지 여부와 상관없이 안전하지 않은 암시적 컨텍스트에서 모든 계산을 수행합니다.
식 계산기는 검사된 블록과 /checked 컴파일러 옵션도 무시합니다. 모든 식은 검사되지 않은 블록 컨텍스트에서 계산됩니다.
특성을 사용하여 사용자 지정 데이터 형식의 표시를 사용자 지정할 수 있습니다. 자세한 내용은 사용자 지정 데이터 형식 표시를 참조하십시오.
식별자 및 형식
디버거 식에서는 현재 범위 내에 표시되는 모든 식별자를 사용할 수 있습니다. 예를 들어 디버거가 Magh 메서드에서 중단되면 상수, 변수 이름 및 메서드 이름을 포함하여 Magh 내에 표시되는 모든 식별자를 사용할 수 있습니다.
디버거는 기본 형식, enum 형식 또는 내장 형식의 모든 변수를 올바로 표시할 수 있습니다. 클래스 형식 변수의 경우 디버거는 파생된 형식을 기반으로 값을 올바로 표시합니다. 예를 들어, Cat 형식에서 파생된 Lion 형식의 leo 개체가 있는 경우 leo.Claws를 계산하여 Lion 형식의 개체에 대한 올바른 값을 얻을 수 있습니다.
l-value인 모든 왼쪽 식에 새 값을 할당할 수 있습니다. 여기에는 기본, 클래스 및 System.Object 형식이 포함됩니다.
메서드 실행
디버거는 오버로드된 메서드를 비롯하여 메서드 실행을 지원합니다. 따라서 다음 식 중 하나를 입력하면 디버거가 올바른 버전의 오버로드된 메서드를 호출합니다.
Time.Set();
Time.Set(atime);
디버거에서 메서드를 실행하면 실제로는 해당 메서드의 코드가 호출되어 실행됩니다. 메서드에 파생 작업이 있는 경우 디버거 창에서 메서드를 실행하면 프로그램의 상태가 변경되어 예기치 않은 결과가 발생할 수 있습니다.
오버로드된 메서드에 중단점을 설정할 때는 메서드를 지정하는 방법에 따라 중단점의 위치가 달라집니다. 전체 시그니처(메서드 이름과 전체 인수 목록)를 지정하는 경우 디버거는 지정된 오버로드에 하나의 중단점을 설정합니다. 메서드 이름만 지정하는 경우 디버거의 동작은 Visual Studio 옵션 설정에 따라 달라집니다. IntelliSense를 사용하여 함수 이름 확인 확인란을 선택하지 않은 경우 디버거는 해당 메서드 이름의 각 오버로드에 중단점 하나를 설정합니다. 그렇지 않으면 중단점 선택 대화 상자가 열립니다. 이 대화 상자에서 중단점을 배치할 오버로드를 지정할 수 있습니다. 자세한 내용은 방법: 함수 중단점 설정을 참조하십시오.
이 버전의 Visual Studio에서는 새로운 무명 메서드를 디버거에서 만들 수 없습니다.
연산자
디버거는 다음과 같은 대부분의 기본 제공 연산자를 올바르게 계산합니다.
관계형 및 같음 연산자: (expr1 > expr2, expr1 < expr2, expr1 <= expr2, expr1 => expr2, expr1 == expr2, expr1 != expr2)
부울 연산자: (expr1 && expr2, expr1 || expr2, expr1 ? expr2 : expr3)
산술 연산자: (expr1 + expr2,expr1 - expr2, expr1 * expr2, expr1 / expr2, expr1 % expr2)
논리 연산자: (expr1 & expr2, expr1 ^ expr2, expr1 | expr2)
시프트 연산자: (expr1 >> expr2, expr1 << expr2)
할당 연산자: (lvalue = expr2, lvalue *= expr2lvalue /= expr2, lvalue %= expr2, lvalue += expr2, lvalue -= expr2, lvalue <<= expr2, lvalue >>= expr2, lvalue &= expr2, lvalue ^= expr2, lvalue |= expr2)
단항 연산자: (+expr1, -expr1, expr1++, ++expr1, expr1--, --expr1)
오버로드된 연산자
디버거에서는 대부분의 오버로드된 연산자를 처리할 수 있습니다.
사용할 수 있는 오버로드된 중위 연산자: +, -, /, %, &
expr1 + expr2
expr1expr2
expr1 / expr2
expr1 % expr2
expr1 & expr2
사용할 수 없는 오버로드된 중위 연산자: =, &&, &, ||
expr1 = expr2
expr1 && expr2
expr1 & expr2
expr1 || expr2
오버로드된 중위 연산자 << 및 >>는 두 피연산자가 모두 클래스 변수인 경우 사용할 수 없습니다.
object1 <<object2
object1 >> object2
사용할 수 있는 오버로드된 전위 연산자: +, -, ++, --, !, ~
+expr1
-expr1
++expr1
--expr1
!expr1
~expr1
사용할 수 있는 오버로드된 후위 연산자: ++, --
expr1++
expr1--
사용할 수 있는 오버로드된 인덱서:
- expr1[expr2]
문자열
디버거에서는 인덱싱된 연산자가 배열뿐만 아니라 문자열과 함께 사용될 때도 인덱싱된 연산자를 인식합니다. 따라서 다음과 같이 입력할 수 있습니다.
"hello world"[0]
조사식 창에는 다음과 같이 올바른 값이 표시됩니다.
'h'
C#에서는 Native C/C++와 달리 디버거에서 문자열 값을 편집할 수 있습니다. 또한 다음과 같이 문자열에 대해 Length 연산자를 사용할 수 있습니다.
mystring.Length
- 또는 -
"hello world".Length
C#에서는 다음과 같이 문자열을 연결할 수 있습니다.
"hello" + "world"
캐스트
디버거에서는 다음과 같이 간단한 캐스트 식을 사용할 수 있습니다.
(A)x
그러나 디버거에서 포인터와 관련된 캐스트는 사용할 수 없습니다.
typeof 및 sizeof 연산자
디버거는 typeof 및 sizeof 연산자를 동등한 .NET Framework 함수로 변환하여 지원합니다.
typeof ( expression )
위의 식은 아래와 같이 변환됩니다.
System.Type.GetType( expression )
디버거는 변환된 이 식을 계산합니다.
디버거는 sizeof 연산자를 지원합니다.
속성 확인
디버거는 모든 변수 창에서 속성을 확인할 수 있습니다. 그러나 디버거에서 속성을 확인하면 예기치 않은 결과가 발생할 수 있습니다. 실수로 속성을 확인하는 것을 방지하려면 옵션 대화 상자에서 속성 확인 기능을 해제합니다.
웹 메서드
디버거 창에서는 웹 메서드를 호출할 수 없습니다.