Создать объект "this"

-7

Я пытаюсь загрузить сериализованный объект внутри класса с помощью метода, подобного этому:

private void loadCatalog(MyClass myClassNew)
{
this = myClassNew;
}

Поэтому у меня есть этот метод в MyClass, и я получаю в качестве параметра объект, имеющий тип MyClass. Как я могу сделать что-то вроде выше? Код выше дает мне ошибку, о которой я не знаю, почему. Объект myClassNew такой же, как и для сериализации, поэтому я уверен, что получаю действительный объект типа MyClass.

спросил(а) 2018-03-16T01:58:00+03:00 2 года, 7 месяцев назад
0
59

Это невозможно. Вы должны написать код, который копирует каждое поле экземпляра MyClass из аргумента в this. Например:

this.firstName = myClassNew.firstName;
this.lastName = myClassNew.lastName;

Вы можете использовать рефлексию для этого, но вы, вероятно, не должны. Если MyClass очень прост, вы можете обнаружить, что некоторые поля требуют специальной обработки. Например, копирование ссылки в List будет очень плохой, если только его не изменяет List, так как оба объекта должны совместно использовать ссылку на тот же объект List.

ответил(а) 2018-03-16T02:12:00+03:00 2 года, 7 месяцев назад
41

Вы получите сообщение об ошибке:

The left-hand side of an assignment must be a variable

"this" не является переменной, которую вы можете назначить. вы можете создавать поля в объекте и делать "this.field1 = myClassNew", но вы не можете назначить "это".

ответил(а) 2018-03-16T02:04:00+03:00 2 года, 7 месяцев назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема