Я знаю, что передача структур как параметра в метод, возврат их или попытка присвоения значения переменной переменной создает копию всей структуры.Доступ к структурным полям копирует всю структуру?
Теперь посмотрим на гипотетический код ниже:
//Regions is an array of a struct type. Color and r/g/b are structs too.
if(Regions[0].Color.r == Regions[0].Color.g && Regions[0].Color.b != 0){
.
..
}
Чтобы получить/б значения г/г, что происходит под капотом? Только значения r/g/b копируются в ячейку памяти или все регионы [0] трижды?
Это просто проверить с 'ReferenceEquals (Регионы [0] Регионы [0])' – Sehnsucht
Это будет возвращать ложь, потому что копии, которые сделаны при прохождении в качестве параметров метода (регионы [0] будет скопирована дважды). Мой вопрос в том, что копии сделаны даже при простом доступе к членам поля (например, Color и r/g/b в примере). –