http://ideone.com/U0XFO9Почему свойство напрямую задает вывод ожидаемого числа, а свойство косвенно установлено равным последнему установленному числу?
Почему свойство непосредственно установить выводя ожидаемое число и свойство косвенно установить равняясь последний номер набора? Извинения за весь код, но это своя версия существующего кода.
следующие выходы код:
1 // 9
2 // 9
3 // 9
4 // 9
5 // 9
6 // 9
7 // 9
8 // 9
9 // 9
Когда он должен вывести:
1 // 1
2 // 2
3 // 3
4 // 4
5 // 5
6 // 6
7 // 7
8 // 8
9 // 9
Код
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;
}
}
}
вы используете экземпляр словаря из оригинала_экземпляра, когда вы делаете «values = original_example.values», поэтому есть один словарь с одним значением для всех объектов. – fsimonazzi