No, it won't.
Integers are "value types" which means that when you use them you get a copy of the value instead of affecting the original.
If we make your code compile:
List<int> list = new List<int>();
int i=2;
list.Add(i);
i=3;
list.Add(i);
Your
list
will end up with two different values on it: 2 and 3.
Try it:
List<int> list = new List<int>();
int i = 2;
list.Add(i);
i = 3;
list.Add(i);
i = 4;
foreach (int item in list)
{
Console.WriteLine(item);
}
list[1] += 10;
Console.WriteLine();
foreach (int item in list)
{
Console.WriteLine(item);
}
You will get:
2
3
2
13