我想知道在c#语法中表示的if语句有多复杂会转化为CodeDom。可能没有CodeDom Expression对象来表示分组(在c#中表示为圆括号),因为它可能被认为是潜在的语言依赖,CodeDom不是。
因此,出于讨论目的,我有一个假设的复杂if语句如下(过度缩进只是为了可读性......)我如何在CodeDom表达式中表示它?
if (
(
(
x == 1
&&
y == 2
&&
z == 3
)
||
(
x == 2
&&
y == 1
)
)
||
(
(
A == 1
||
A == 3
)
&&
(
B == 2
||
B == 5
)
)
&&
C == 123
);//end if
答案 0 :(得分:0)
哦,我想我意识到这是如何运作的...... 这一切都归结为用二元运算符表达式对象表示每个单独的比较。
基本上我最终会得到一系列嵌套的CodeBinaryOperatorExpression对象,这些对象通过左右代码表达式链接在一起......
if (
(
(
(
x == 1 //A
&&
y == 2 //B
//C == A && B
&&
y == 3 //D
) //E = C && D
||
(
x == 2 //F
&&
y == 1 //G
) //H == F && G
) //I == E || H
||
(
(
A == 1 //J
||
A == 3 //K
) //L = J || K
&&
(
B == 2 //M
||
B == 5 //N
) //O = M || N
) //P = L && O
) //Q = I || P
&&
z = 123 //R
//S = Q && R
) //end if