В настоящее время изучается C# при выходе из C++.Указатель на экземпляр объекта как свойство класса B (C#)
У меня есть важный класс, который необходимо разделить между несколькими классами. Пример кода в C++:
// The important class
class Foo {
// ...
}
// Class that needs an instance of Foo
class Bar {
public:
Bar(Foo* foo);
// ...
protected:
Foo* m_foo; // <- holds pointer to instantiated Foo-object
}
Bar::Bar(Foo* foo)
: m_foo(foo) {}
И, возможно, больше классов, таких как Bar
, которые должны знать свойства определенного экземпляра Foo
. Мне нравится использовать этот метод по нескольким причинам:
- Вам не нужно постоянно обновлять
m_foo
. Особенно полезно, если существует ряд классов, которые изменяют его свойства и ряд классов, которые используют его свойства. Он быстро выходит из-под контроля. - Отсутствие нескольких копий экземпляра
Foo
. - Вам не обязательно передавать экземпляр
Foo
в качестве аргумента все время.
Вопрос: Есть ли в C# эквиваленты?
Что не возможно или нежелательная:
- Имея указатель на класс как собственность. Другими словами, копирование кода C++ на C#. Ключевое слово
unsafe
не относится к указателям на классы. Ключевое словоfixed
работает только внутри тел. - Передача объекта в качестве аргумента в каждой отдельной функции.
- Обновление новых значений каждому классу, который в нем нуждается, и, следовательно, копия, лежащая повсюду. Неэффективен как для использования памяти, так и будет значительно медленнее.
Welp, который был немым. Классы являются ссылочным типом, поэтому их свойства никогда не копируются ... Большое спасибо! – Didii