变量声明未按预期解析

变量声明未按预期解析

在C#中使用CodeDom,我试图生成以下for循环:

for (int i = 0; i < ds.Tables[0].Rows.Count; i = (i + 1))


除了我的代码正在生成此代码:

for (int i; (i < ds.Tables[0].Rows.Count); i = (i + 1))


请注意,这不会将i初始化为零,这不会在C#中进行编译。 (VB确实接受了这一点)。
因此,我必须在代码生成后再进行操作,并手动对其进行修复,这通常很烦人,但是我想对其进行修复。生成整个语句的代码如下:

CodeVariableDeclarationStatement idx = new CodeVariableDeclarationStatement(new CodeTypeReference("System.Int32"), "i", new CodePrimitiveExpression(0));
        CodeIndexerExpression dsIndex = new CodeIndexerExpression(new CodeVariableReferenceExpression("ds.Tables"), new CodeExpression[] { new CodePrimitiveExpression(0) });
        CodeBinaryOperatorExpression comp = new CodeBinaryOperatorExpression(new CodeVariableReferenceExpression("i"), CodeBinaryOperatorType.LessThan, new CodePropertyReferenceExpression(dsIndex, "Rows.Count"));
        CodeAssignStatement incr = new CodeAssignStatement(new CodeVariableReferenceExpression("i"), new CodeBinaryOperatorExpression(new CodeVariableReferenceExpression("i"), CodeBinaryOperatorType.Add, new CodePrimitiveExpression(1)));
        CodeIterationStatement iterator = new CodeIterationStatement(idx, comp, incr);


根据MSDN,这是初始化值的方法,除非我缺少一些细微的东西。有人可以帮忙吗?

编辑:该代码是正确的。事实证明,该解决方案中的另一个项目引用了具有过期许可证的Redgate-SQL库,并且以某种方式阻止了我的更新得到正确部署。感谢您的帮助和时间。

最佳答案

它在我的机器上似乎运行良好。

返回值:

for (int i = 0; (i < ds.Tables[0].Rows.Count); i = (i + 1)) {
}


您正在使用哪个版本的框架?

关于c# - 变量声明未按预期解析,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/504027/

10-10 09:44