#c_sharp
Почему мы не можем изменить поле структуры объявленной в классе? struct Struct { public int X { get; set; } } class Class { public Struct Struct { get; set; } } class Program { static void Main(string[] args) { var str = new Class() {Struct = new Struct() {X = 10}}; Console.WriteLine(str.Struct.X); str.Struct.X++; Console.WriteLine(str.Struct.X); } }
Ответы
Ответ 1
Ответ. Потому что структуры - значимый тип, который копируется при обращении. В классе: class Class { public Struct Struct { get; set; } } При каждом обращении, свойство Struct всегда возвращает копию структуры. При первом обращении вы получаете копию, в которой изменяете значение свойства X. Это изменение касается только копии, оригинал остается нетронутым. При втором обращении, вы получаете еще одну копию оригинальной (не измененной) структуры.
Комментариев нет:
Отправить комментарий