Why is the property directly set outputting the expected number and the property indirectly set equaling the last set number? Apologies for all the code but this is a boiled down version of the actual code.
The following code outputs:
1 // 9
2 // 9
3 // 9
4 // 9
5 // 9
6 // 9
7 // 9
8 // 9
9 // 9
When it should output:
1 // 1
2 // 2
3 // 3
4 // 4
5 // 5
6 // 6
7 // 7
8 // 8
9 // 9
Code
using System;
using System.Collections.Generic;
public class Test
{
public static void Main()
{
int x = 0;
example original_example = new example(0);
List<example> examples = new List<example>();
while (++x < 10)
{
examples.Add(new example(original_example, x));
}
foreach(example _example in examples)
Console.WriteLine(_example.number1 + " // " + _example.number2);
}
public class example
{
public int number1;
public int number2 { get { return (int)values["number"]; } }
public bool original = true;
Dictionary<string, object> values = new Dictionary<string,object>();
public example(int number)
{
original = true;
number1 = number;
values.Add("number", number);
}
public example(example original_example, int number)
{
original = false;
values = original_example.values;
values["number"] = number;
number1 = number;
}
}
}