В методе я получаю пользовательский объект, который я повторно использую. позже, чтобы уступить снова.
private IEnumerable<DistributorMonthlyComparisonData> ExtractMonthlyAggregate(String CSVFilepath)
{
DistributorMonthlyComparisonData unitData = new DistributorMonthlyComparisonData();
while (!reader.EndOfStream)
{
if(something){
// fill unitData
}
else{
yield return unitData;
}
}
}
В другом объекте в моей программе я вызываю указанный метод следующим образом:
List<DistributorMonthlyComparisonData> distribList = new List<DistributorMonthlyComparisonData>();
foreach (DistributorMonthlyComparisonData result in ExtractMonthlyAggregate(percorso))
{
distribList.Add(result);
}
Если я не создаю в методе урожайности, после каждого выхода, новый объект
unitData = new DistributorMonthlyComparisonData();
Все, что я получаю, это список идентичных объектов.
Мне интересно: это потому, что unitData передается как ссылка, и, таким образом, список - это просто список ссылок на один и тот же идентичный объект? Создание нового unitData () каждый раз, когда изменяется хеш передаваемого объекта unitData?
Пожалуйста, просветите меня. :)
РЕДАКТИРОВАТЬ Меня интересует почему это происходит.
Раньше я считал, что фреймворк должен выполнять копирование при записи на объекты, поэтому, по сути, создание одного объекта с последующим изменением его свойств и повторным получением должно приводить к добавлению двух разных объектов в список.