The topic you requested is included in another documentation set. For convenience, it's displayed below. Choose Switch to see the topic in its original location.

# Using the iteration variable in a lambda expression may have unexpected results

Visual Studio 2013
Using the iteration variable in a lambda expression may have unexpected results. Instead, create a local variable within the loop and assign it the value of the iteration variable.

This warning appears when you use a loop iteration variable in a lambda expression that is declared inside the loop. For example, the following example causes the warning to appear.

```For i As Integer = 1 To 10
' The warning is given for the use of i.
Dim exampleFunc As Func(Of Integer) = Function() i
Next
```

The following example shows the unexpected results that might occur.

```Module Module1
Sub Main()
Dim array1 As Func(Of Integer)() = New Func(Of Integer)(4) {}

For i As Integer = 0 To 4
array1(i) = Function() i
Next

For Each funcElement In array1
System.Console.WriteLine(funcElement())
Next

End Sub
End Module
```

The For loop creates an array of lambda expressions, each of which returns the value of the loop iteration variable i. When the lambda expressions are evaluated in the For Each loop, you might expect to see 0, 1, 2, 3, and 4 displayed, the successive values of i in the For loop. Instead, you see the final value of i displayed five times:

5

5

5

5

5

By default, this message is a warning. For more information about hiding warnings or treating warnings as errors, see Configuring Warnings in Visual Basic.

Error ID: BC42324

### To correct this error

• Assign the value of the iteration variable to a local variable, and use the local variable in the lambda expression.

```Module Module1
Sub Main()
Dim array1 As Func(Of Integer)() = New Func(Of Integer)(4) {}

For i As Integer = 0 To 4
Dim j = i
array1(i) = Function() j
Next

For Each funcElement In array1
System.Console.WriteLine(funcElement())
Next

End Sub
End Module
```

## See Also

#### Concepts

Was this page helpful?
(1500 characters remaining)
Thank you for your feedback
Show:
© 2014 Microsoft