[英]Class property with same type like used in Singleton Pattern Design
我不明白我們如何在尚未創建的類中使用相同的屬性和字段類型。
例如Singleton Design:
public class Singleton
{
private static Singleton instance;
private Singleton() {}
public static Singleton Instance
{
get
{
if (instance == null)
{
instance = new Singleton();
}
return instance;
}
}
}
這怎么可能。 尚未聲明。 它就像一個遞歸函數。 我不明白邏輯。
該屬性和字段是靜態的。 靜態成員不需要創建該類型的對象。 它們就像放在該<classname>
命名空間中的舊程序和函數一樣。
有趣的問題!
將您的課堂視為一個想法。 編譯器知道您的想法本身,因為它在同一區域(名稱空間)。 因此,編譯沒有問題。
遞歸函數涉及一個付諸實踐的想法。 如果您遞歸調用函數,則將其繼續放置在計算機堆棧中,該堆棧最終將溢出。 1個
當您在自身內部引用一個類(已付諸實踐的想法)時,您正在創建一個指向該類特定實例(思想)的指針。 因此,一個指針可以在其中引用另一個指針,甚至可以引用同一指針。
同樣,對於static
(或在VB中為Shared
)變量,對於該類的所有實例,該變量只有一個實例。 您實際上不需要類的實例來調用靜態成員,屬性或函數。
總結一下我的觀點:這種模式不會導致遞歸,因為您永遠不會導致從構造調用的類中構造類。 如果您的Instance屬性嘗試調用自身來獲取和實例,則將導致遞歸。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.