2012-07-17 16 views
6

Bir iş arkadaşının yazdığı ve gerçekleştirmeyi beklediğim kodlara bakmıyorum. İşte kod:Statikin bu durumda nasıl çalıştığını anlamaya çalışıyorum

private SingletonClass sc = SingletonClass.Instance.Instance.Instance.Instance.Instance.Instance; 

ve bu sınıfın aynı örneği referans: Başka bir sınıfta

public class SingletonClass 
{ 
    private static readonly SingletonClass _instance = new SingletonClass(); 

    public static SingletonClass Instance 
    { 
     get { return _instance; } 
    } 

    private SingletonClass() 
    { 
     //non static properties are set here 
     this.connectionString = "bla" 
     this.created = System.DateTime.Now; 
    } 
} 

, ben yapabilmek olması bekleniyor olurdu. Ne olur, sadece bir tane .Instance alabilirim. Beklemediğim bir şey. Instance özelliği, SingletonClass sınıfını döndürürse, döndürülen sınıftaki Instance özelliğini neden bulamıyorum?

cevap

12

Örnek özelliği bir SingletonClass sınıfı döndürürse, neden döndürülmüş sınıftaki Örnek özelliğini çağıramıyorum ve bu böyle devam eder?

sadece SingletonClasstip aracılığıyla .Instance erişebildiği için, değil bu tür bir örneği yoluyla.

Instance statik olduğundan, türü aracılığıyla erişmek gerekir:

SingletonInstance inst = SingletonInstance.Instance; // Access via type 

// This fails, because you're accessing it via an instance 
// inst.Instance 

sen zincirine bu deneyin, etkili yapıyoruz:

SingletonInstance temp = SingletonInstance.Instance; // Access via type 

// ***** BAD CODE BELOW **** 
// This fails at compile time, since you're trying to access via an instance 
SingletonInstance temp2 = temp.Instance; 
+0

Ah doğru, şimdi mantıklı için bu SingletonClass _instance = new SingletonClass(); yapmaktan kurtarmaktadır yapıyor SingletonClass

bir örneğini dönüyor. – Justin

0

kodunda iadelerinizde Tekli

türünde bir statik olan Örnek aracılığıyla örneğini kullanarak bunu SingletonClass.Instance.Instance b yapmanıza izin vermeyecektir ecause SingletonClass.Instance Bütün bu SingletonClass.Instance.Instance

İlgili konular