#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. Это изменение касается только копии, оригинал остается нетронутым. При втором обращении, вы получаете еще одну копию оригинальной (не измененной) структуры.
Комментариев нет:
Отправить комментарий