Foreach Variable in C# generated code 

    In C# 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

    Public Function TestCommentedLines(ByVal P() As String) As Integer
        Dim S
        Dim Count As Integer
        For Each S In P
        If Not S IsNothing Then
           MsgBox(S)
           Count = Count + 1
           S = Nothing
        End If
        Next S
        TestCommentedLines = Count
    End Function
    

    Target C#

    public int TestCommentedLinesstring[] 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;
    }
    
    Important Resources

    Download VBUC Free Trial
    Download  Now

    It's time to eradicate VB6
    ROI of Eradicating VB6

    8 Proven Tips for
    Planning a Successful Migration

    Learn More