NOTE #2041
The following line was commented.
Description
This EWI appears in C# generated code, because a foreach variable can't be assignable, so to avoid a compilation error, the line must be commented. In VB.Net the iteration variable can be assigned so, this restriction is not applied.
Recommendations
Check the logic of the original vb6 function. In some cases the nothing assignation to the iteration variable is a way to stop the cycle. If this is the case use the break statement instead.
For the given example, just remove the commented line and the EWI.
Sample VB6
PublicFunction TestCommentedLines(ByVal P() AsString) AsInteger
Dim S
Dim Count AsInteger
ForEach S In P
IfNot S IsNothingThen
MsgBox(S)
Count = Count + 1
S = Nothing
EndIf
Next S
TestCommentedLines = Count
EndFunction
Target VB.NET
PublicFunction TestCommentedLines(ByRef P() AsString) AsInteger
Dim Count AsInteger
Dim S AsString
ForEach S AsStringIn P
IfNot (S IsNothing) Then
MessageBox.Show(S, Application.ProductName)
Count += 1
S = Nothing
EndIf
Next S
Return Count
EndFunction
Expected VB.NET
This Issue doesn't appear on VB.NET Code.
Target C#
publicint TestCommentedLines( string[] P)
{
int Count = 0;
foreach (string S in P)
{
if (S != null)
{
MessageBox.Show(S, Application.ProductName);
Count++;
//UPGRADE_NOTE: (2041) The following line was commented.
//S = null;
}
}
return Count;
}
Expected C#
publicint TestCommentedLines( string[] P)
{
int Count = 0;
foreach (string S in P)
{
if (S != null)
{
MessageBox.Show(S, Application.ProductName);
Count++;
}
}
return Count;
}
Updated for VBUC v3.0
Last generated on 6/19/2009 10:05:09 AM