如何在 c# 中的 If-Else 条件中添加 forloop?[CODEDOM]

问题描述

如何在 Codedom 中执行以下代码

dt

我熟悉 CodeIterationStatement 和 CodeConditionStatement 但不知道如何执行。

解决方法

你想在循环内执行什么类型的语句或条件取决于需求。我想 if 语句里面应该有一个条件让我们通过例子来理解

int a=5;
if(a>1)
{
    for(int i=0;i<10;i++)
        {
        Console.WriteLine("{0}",i);
        }
}
,

这应该可以解决问题

        private CodeConditionStatement makeIfStatementWithLoop(CodeExpression conditionExpr,CodeExpression iterationLimit)
        {
            CodeConditionStatement ifStatement = new CodeConditionStatement();
            ifStatement.Condition = conditionExpr;
            CodeVariableDeclarationStatement iDeclaration = new CodeVariableDeclarationStatement(new CodeTypeReference(typeof(int)),"i");
            CodeVariableReferenceExpression iReference = new CodeVariableReferenceExpression(iDeclaration.Name);
            CodeIterationStatement loopStatement = new CodeIterationStatement();
            loopStatement.InitStatement = new CodeAssignStatement(iReference,new CodePrimitiveExpression(0));
            CodeAssignStatement incrementStatement = new CodeAssignStatement();
            incrementStatement.Left = iReference;
            incrementStatement.Right = new CodeBinaryOperatorExpression(iReference,CodeBinaryOperatorType.Add,new CodePrimitiveExpression(1));
            loopStatement.IncrementStatement = incrementStatement;
            loopStatement.TestExpression = new CodeBinaryOperatorExpression(iReference,CodeBinaryOperatorType.LessThan,iterationLimit);
            CodeVariableReferenceExpression consoleRef = new CodeVariableReferenceExpression("Console");
            CodeExpression[] args = new CodeExpression[] { iReference };
            CodeMethodInvokeExpression consoleWriteLineStmt = new CodeMethodInvokeExpression(consoleRef,"WriteLine",args);
            loopStatement.Statements.Add(consoleWriteLineStmt);
            ifStatement.TrueStatements.Add(loopStatement);
            return ifStatement;
        }