我想知道用c#语法表示的if语句转换成CodeDom有多复杂。可能没有CodeDom表达式对象来表示分组(在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发布于 2017-03-14 13:01:41
我想我知道这是怎么回事了..。这一切都归结为用一个二元运算符表达式对象来表示每个单独的比较。
所以从本质上讲,我最终会得到一系列嵌套的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 ifhttps://stackoverflow.com/questions/42777850
复制相似问题