2009-02-02 6 views
2

는 C#으로 된 CodeDom을 사용하여 예상대로 해결되지, 나는 루프에 대해 다음 생성하는 것을 시도하고있다 :이가하는변수 선언

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

참고 : 제외

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

내 코드는이 생성된다 C#에서 컴파일되지 않는 0으로 초기화하지 않습니다. VB는 이것을 받아들입니다.
코드가 생성 된 후 나중에 수동으로 수정해야합니다. 이는 대부분 짜증나지만, 수정하고 싶습니다. 다음과 같이 전체 문장을 생성하는 코드는 다음과 같습니다 MSDN 이에 따라

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

내가 부족 미묘한 무언가가 아니라면, 값을 초기화 할 수있는 방법입니다. 아무도 도와 줄 수 있니?

편집 : 코드가 정확합니다. 솔루션의 또 다른 프로젝트는 라이센스가 만료 된 Redgate-SQL 라이브러리를 참조하고 있었고 업데이트가 제대로 배포되지 못하는 경우였습니다. 도와 주셔서 감사합니다.

답변

1

내 컴퓨터에서 제대로 작동하는 것 같습니다.

결과 :

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

사용하는 프레임 워크의 버전은 무엇?

+0

.NET 3.5SP1을 사용하여 나에게도 적합합니다. – Andy