Объявление переменной не разрешается должным образом

2

Используя CodeDom в С#, я пытаюсь создать следующее для цикла:

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))

Обратите внимание, что это не инициализирует я до нуля, который не компилируется в С#. (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, у которой была истекшая лицензия, и это как-то мешало моим обновлениям развертываться правильно. Спасибо за вашу помощь и время.

Теги:
codedom

1 ответ

1

Кажется, он хорошо работает на моей машине.

Возврат:

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

Какую версию фреймворка вы используете?

  • 0
    Это работает и для меня, используя .NET 3.5SP1.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню