Сообщение Re[3]: Передать this в виде object от 15.03.2024 10:53
Изменено 15.03.2024 10:54 Serginio1
Re[3]: Передать this в виде object
Здравствуйте, drVanо, Вы писали:
S>>Тут два варианта с боксингом унбоксингом и без него
S>>
V>Дак это вы просто копируете содержимое копии обратно в this
Так в этом и заключается боксинг унбоксинг.
Приведя структуру к объекту ты создаешь новый объект. Изменяешь его и должен обратно его присвоить структуре.
Не хочешь боксинга используй ref структуры
S>>Тут два варианта с боксингом унбоксингом и без него
S>>
S>> public void Move(int a, int b)
S>> {
S>> // MoveObject(ref this, a, b);
S>> object obj = this;
S>> MoveObject(ref obj, a, b);
S>> this= (Point)obj;
S>> Console.WriteLine("point from this: {0}.{1}", x, y);
S>> }
S>>
V>Дак это вы просто копируете содержимое копии обратно в this
Так в этом и заключается боксинг унбоксинг.
Приведя структуру к объекту ты создаешь новый объект. Изменяешь его и должен обратно его присвоить структуре.
Не хочешь боксинга используй ref структуры
public void Move(int a, int b)
{
MoveObject(ref this, a, b);
Console.WriteLine("point from this: {0}.{1}", x, y);
}
static void MoveObject(ref Point p, int a, int b)
{
p.x += a;
p.y += b;
Console.WriteLine("point from object: {0}.{1}", p.x, p.y);
}
Re[3]: Передать this в виде object
Здравствуйте, drVanо, Вы писали:
S>>Тут два варианта с боксингом унбоксингом и без него
S>>
V>Дак это вы просто копируете содержимое копии обратно в this
Так в этом и заключается боксинг унбоксинг.
Приведя структуру к объекту ты создаешь новый объект. Изменяешь его и должен обратно его присвоить структуре.
Интересные моменты в C# (boxing unboxing)
Не хочешь боксинга используй ref структуры
S>>Тут два варианта с боксингом унбоксингом и без него
S>>
S>> public void Move(int a, int b)
S>> {
S>> // MoveObject(ref this, a, b);
S>> object obj = this;
S>> MoveObject(ref obj, a, b);
S>> this= (Point)obj;
S>> Console.WriteLine("point from this: {0}.{1}", x, y);
S>> }
S>>
V>Дак это вы просто копируете содержимое копии обратно в this
Так в этом и заключается боксинг унбоксинг.
Приведя структуру к объекту ты создаешь новый объект. Изменяешь его и должен обратно его присвоить структуре.
Интересные моменты в C# (boxing unboxing)
Не хочешь боксинга используй ref структуры
public void Move(int a, int b)
{
MoveObject(ref this, a, b);
Console.WriteLine("point from this: {0}.{1}", x, y);
}
static void MoveObject(ref Point p, int a, int b)
{
p.x += a;
p.y += b;
Console.WriteLine("point from object: {0}.{1}", p.x, p.y);
}