Есть двойной цикл for с проверкой внутри на совпадение с заранее добытым массивом id
Тоесть цикл добавляет в List объект из перебраного списка у которого совпал id
getInfo - внутренний метод класса который выводит содерживмое класса
dfood - список нужных id
masses - список значений которые нужно общитать и установить
temp - список всех id по одному
result - схожий по сути список как и temp (тоже List), но с повторениями
Если ещё вкратце, то готовый объект который нужно добавить верный, а при выходе их циклов там левые объекты (копии последних добавленых подобных)
for (int i = 0; i< dfood.Count; i++)
{
for(int j = 0; j < temp.Count; j++)
{
if(temp[j].id == dfood[i])
{
food temp2 = temp[j];
int c = temp2.cal;
temp2.setCalory((int)(((double)c / 100) * masses[i]));
result.Add(temp2);
result[result.Count-1].getInfo();//выводит верную инфу 100%
}
}
}
foreach (food cal in result)
{
cal.getInfo(); // не верная инфа
}
Собственно сам класс
class food
{
public int id;
public string name;
public string typePr;
public int cal;
public string desk;
public food(int id_, string name_, string typePr_, int cal_, string desk_)
{
id = id_;
name = name_;
typePr = typePr_;
cal = cal_;
desk = desk_;
}
public void setCalory(int c)
{
cal = c;
}
public void getInfo()
{
Debug.WriteLine("----------------");
Debug.WriteLine("id: " + id);
Debug.WriteLine("name: " + name);
Debug.WriteLine("typePr: " + typePr);
Debug.WriteLine("cals: " + cal);
//Debug.WriteLine("desc: " + desk);
Debug.WriteLine("----------------");
}
}
Если врубить вот это дебаг-логирование в консоль, то я ожидал от последнего foreach увидеть примерно вот такое
----------------
id: 4
name: батон
typePr: Хлебобулочное
cals: 238
----------------
----------------
id: 4
name: батон
typePr: Хлебобулочное
cals: 240
----------------
----------------
id: 4
name: батон
typePr: Хлебобулочное
cals: 242
----------------
Но на самом деле то вот так выходит. Хотя вывод в цикле, в условии такой как нужно (ну как в верху)
----------------
id: 4
name: батон
typePr: Хлебобулочное
cals: 242
----------------
----------------
id: 4
name: батон
typePr: Хлебобулочное
cals: 242
----------------
----------------
id: 4
name: батон
typePr: Хлебобулочное
cals: 242
----------------
Потому что все ссылки ссылаются на один и тот же объект.
PS: В чем суть отличия между ссылочными и значимыми типами данных в C#?
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Добавил вторую форму, подскажите, как в файле Appxaml добавить стиль на вторую форму? P
Как скомпилировать проект вNET Native? Нужного пункта нету, как его включить?
Есть строка, необходимо разбить её на подстроки по 2 условиям: