170 похожих чатов

Есть три класса. В первом публичное свойство, тут в методе

создается экземпляр второго класса, ссылка на этот второй класс теперь содержится в публичном свойстве. В третьем классе в приватное поле кешируется ссылка из первого класса на второй класс через свойство (где содержится экземпляр класса 2). Теперь если в первом классе заново создать экземпляр второго класса и поместить его в свойство, то в первом классе остается закешированный экземпляр с первого раза! Как сделать, чтобы в закешированных ссылках автоматом обновлялись экземпляры классов на новые?

13 ответов

21 просмотр

Звучит немного странно, но как вариант сделать ивенты

Можно погуглить INotifyPropertyChanged

Serg from FarCry- Автор вопроса
Andrew Shurunov
Звучит немного странно, но как вариант сделать иве...

Я немного не так выразился. Сделать то я могу чтобы обновлялось. Но я хочу понять, почему не обновляется экземпляр объекта. Там ведь ссылочный тип.

Serg from FarCry
Я немного не так выразился. Сделать то я могу чтоб...

Я так понял, у тебя есть два класса. Забудем про публичность и приватность для примера: class A{ public C Prop {get; set;} } class B{ public C Prop {get;set;} } И ты пишешь: var a = new A(); A.Prop = new C(); var b = new B(); var b.Prop = a.Prop; a.Prop = new C(); Да?

Serg from FarCry- Автор вопроса
Andrew Shurunov
Я так понял, у тебя есть два класса. Забудем про п...

Проще накидал пример public class ClassTest { public int Num { get; } public ClassTest(int num) { Num = num; } } private ClassTest _classTest; private void StartTest() { ClassTest classTest = new ClassTest(1); _classTest = classTest; Debug.Log($"Value {classTest.Num}, Cached Value {_classTest.Num}"); classTest = new ClassTest(2); //_classTest = classTest; Debug.Log($"Value {classTest.Num}, Cached Value {_classTest.Num}"); }

Serg from FarCry
Проще накидал пример public class ClassTest { pu...

Так у тебя classTest теперь ссылается на новое значение, а _classTest на старое

Serg from FarCry- Автор вопроса
Andrew Shurunov
Так у тебя classTest теперь ссылается на новое зна...

Почему так происходит? Ведь классы это ссылочный тип.

Serg from FarCry
Почему так происходит? Ведь классы это ссылочный т...

classTest и _classTest никак не связаны Изначально они "по совпадению" ссылались на один и тот же объект Потом ты одну ссылку изменил, а другую нет

Serg from FarCry
Почему так происходит? Ведь классы это ссылочный т...

new ClassTest меняет ссылку, а не меняет содержимое по ссылке

Serg from FarCry- Автор вопроса
Andrew Shurunov
Так у тебя classTest теперь ссылается на новое зна...

Ну вообще как-то нелогично, тип ссылочный, а получается остается старый экземпляр, вместо того что ссылаться на первоисточник ссылки. По логике заменив который новым экземляром, все закешированные ссылки должны указывать на него.

Serg from FarCry
Ну вообще как-то нелогично, тип ссылочный, а получ...

Тут будто бы ты ожидаешь, что вторая переменная будет вести себя не как указатель, а как указатель на указатель

Serg from FarCry
А такое невозможно?

Только если через небезопасный код. Или самому обертку написать, которая будет вести себя как указатель на указатель

Похожие вопросы

Обсуждают сегодня

30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Ребят в СИ можно реализовать ООП?
Николай
33
Как передать управляющий символ в открытую через CreateProcess консоль? Собсна, есть процедура: procedure TRedirectThread.WriteData(Data: OEMString); var Written: Cardinal;...
Serjone
6
в JclConsole объявлено так: function CtrlHandler(CtrlType: DWORD): BOOL; stdcall; - где ваше объявление с stdcall? у вас на картинке нет stdcall
Karagy
8
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
~ 2m21s  nix shell github:nixos/nixpkgs#stack ~  stack ghc -- --version error: … while calling the 'derivationStrict' builtin at /builtin/derivation.nix:...
Rebuild your mind.
6
Карта сайта