DebugView 속성(디버깅할 때만 사용 가능)은 식 트리의 문자열 렌더링을 제공합니다. 대부분의 구문은 이해하기가 매우 간단합니다. 특수 사례는 다음 섹션에 설명되어 있습니다.
각 예제 뒤에 DebugView가 포함된 주석 블록이 잇습니다.
매개변수 표현
ParameterExpression 변수 이름은 처음에 "$" 기호와 함께 표시됩니다.
매개 변수에 이름이 없으면 자동으로 생성된 이름(예: $var1 또는 $var2.)이 할당됩니다.
예시
Dim numParam As ParameterExpression = Expression.Parameter(GetType(Integer), "num")
'
' $num
'
Dim numParam As ParameterExpression = Expression.Parameter(GetType(Integer))
'
' $var1
'
ConstantExpressions
정수 값, 문자열 및 ConstantExpression상수의 값을 나타내는 개체의 경우 null 표시됩니다.
일부 숫자 형식의 경우 접미사가 값에 추가됩니다.
| 유형 | 키워드 | 접미사 |
|---|---|---|
| System.UInt32 | UInteger | U |
| System.Int64 | 오래 | 엘 |
| System.UInt64 | ULong | UL |
| System.Double | 이중 | D |
| System.Single | 싱글 | F |
| System.Decimal | 10진수 | M |
예시
Dim num as Integer = 10
Dim expr As ConstantExpression = Expression.Constant(num)
'
' 10
'
Dim num As Double = 10
Dim expr As ConstantExpression = Expression.Constant(num)
'
' 10D
'
블록 표현식
개체의 BlockExpression 형식이 블록의 마지막 식 형식과 다른 경우 형식은 꺾쇠 괄호(< 및 >)에 표시됩니다. 그렇지 않으면 개체의 형식이 BlockExpression 표시되지 않습니다.
예시
Dim block As BlockExpression = Expression.Block(Expression.Constant("test"))
'
' .Block() {
' "test"
' }
'
Dim block As BlockExpression = Expression.Block(
GetType(Object),
Expression.Constant("test")
)
'
' .Block<System.Object>() {
' "test"
' }
'
람다익스프레션
LambdaExpression 개체는 대리자 형식과 함께 표시됩니다.
람다 식에 이름이 없으면 자동으로 생성된 이름(예: #Lambda1 또는 #Lambda2.)이 할당됩니다.
예시
Dim lambda As LambdaExpression = Expression.Lambda(Of Func(Of Integer))(
Expression.Constant(1)
)
'
' .Lambda #Lambda1<System.Func'1[System.Int32]>() {
' 1
' }
'
Dim lambda As LambdaExpression = Expression.Lambda(Of Func(Of Integer))(
Expression.Constant(1),
"SampleLambda",
Nothing
)
'
' .Lambda #SampleLambda<System.Func'1[System.Int32]>() {
' 1
' }
'
레이블 익스프레션
개체의 기본값을 LabelExpression 지정하면 이 값이 개체 앞에 LabelTarget 표시됩니다.
토큰은 .Label 레이블의 시작을 나타냅니다.
.LabelTarget 토큰은 이동할 대상의 목적지를 나타냅니다.
레이블에 이름이 없으면 자동으로 생성된 이름(예: #Label1 또는 #Label2.)이 할당됩니다.
예시
Dim target As LabelTarget = Expression.Label(GetType(Integer), "SampleLabel")
Dim label1 As BlockExpression = Expression.Block(
Expression.Goto(target, Expression.Constant(0)),
Expression.Label(target, Expression.Constant(-1))
)
'
' .Block() {
' .Goto SampleLabel { 0 };
' .Label
' -1
' .LabelTarget SampleLabel:
' }
'
Dim target As LabelTarget = Expression.Label()
Dim block As BlockExpression = Expression.Block(
Expression.Goto(target),
Expression.Label(target)
)
'
' .Block() {
' .Goto #Label1 { };
' .Label
' .LabelTarget #Label1:
' }
'
검사된 연산자
체크된 연산자는 연산자 앞에 # 기호와 함께 표시됩니다. 예를 들어 확인된 더하기 연산자는 .로 #+표시됩니다.
예시
Dim expr As Expression = Expression.AddChecked(
Expression.Constant(1),
Expression.Constant(2)
)
'
' 1 #+ 2
'
Dim expr As Expression = Expression.ConvertChecked(
Expression.Constant(10.0),
GetType(Integer)
)
'
' #(System.Int32)10D
'
.NET