2013-04-02 46 views
1

這就是我說的。訪問C#的單身人士,而不通過它進入類

public sealed class ObjectZ { 
    static readonly ObjectZ _instance = new ObjectZ(); 
    private ObjectZ() {} 
    public static ObjectZ Instance{ 
     get { return _instance; } 
    } 
} 

我想訪問該指針...

ObjectZ obj = ObjectZ.Instance; 

從另一個類,而不傳遞到構造函數或方法,並設置它。如果我從另一個班級做這條線,我是否得到同一個對象?

我習慣了Objective-C,在這裏你可以從UIApplicationDelegate中檢索單行風格的對象。

回答

5

無論您在哪個代碼中訪問它,ObjectZ.Instance值都會返回相同的對象。它由靜態字段支持,靜態字段基本上是全局的。

雖然有些情況下靜態字段會有不同的值。

  • 如果靜態字段在不同的AppDomain實例中。通常,雖然如果靜態字段包含在一個通用型的應用程序只有一個AppDomain
  • 則不同實例將有不同的靜態字段值
+0

我有一個非常大的代碼庫(.NET 2.0應用程序)。有沒有簡單的方法來判斷一個項目是否有多個AppDomain? – Glimpse

+2

AppDomains是一種運行時現象。一個應用程序可以從一個AppDomain開始,然後添加更多。可以看到這種情況的典型情況是在ASP.NET中,在第一個AppDomain被停頓並且一個新的AppDomain被啓動時,可能存在多個AppDomain。 –