0
當前正在學習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
只適用於身體。 - 在每個函數中將對象作爲參數傳遞。
- 將更新的值更新爲每個需要它的類,因此隨處可見一個副本。兩種內存使用效率都不高,而且會相當慢。
韋爾普,那是愚蠢的。類是一個引用類型,所以它們的屬性確實從不復制......非常感謝! – Didii