2009-10-14 50 views
0
public class MySingletonClass 
{ 
    private static MySingletonClass mySingletonClass; 
    private const decimal someDiscount = 3.00M; 

    public static MySingletonClass Instance 
    { 
     get 
     { 
      if (mySingletonClass == null) 
       mySingletonClass = new mySingletonClass(); 

      return mySingletonClass; 
     } 
    } 
    .... 

    public static decimal SomeDiscount 
{ 
    get { return this.someDiscount;} 
    } 
    ... 
    } 

我想公開someDiscount作爲一個屬性,所以我可以稍後在靜態實例屬性中使用它。我想你不能用一個常量來做到這一點?不能從單體或屬性中暴露常量

回答

3

您需要在someDiscount之前刪除this.。常量本質上是靜態的,不能使用實例修飾符來訪問。

這就是說,這是一個有點不尋常的模式。無論是現場恆定的,永遠不會改變,在這種情況下,你往往會暴露它是這樣......

public const decimal SomeDiscount = 3M; 

...或者不是恆定的,所以你止跌「T往往要明確指定爲它不變,只是從屬性返回它...

public static decimal SomeDiscount 
{ 
    get { return 3M; } 
} 

...兼具似乎有點矛盾。

4

使用這個似乎在一個靜態的方法。當你刪除它會發生什麼?

0

你只是不能使用這個限定符,因爲它是多餘的。有效的將返回someDiscount或返回MySingletonClass.someDiscount。

認爲const就像靜態一樣。

3

刪除關鍵字恆定自動爲靜態

public static decimal SomeDiscount 
     { 
      get { return someDiscount; } 
     } 
0

Somediscount不應該是靜態的(對不起,我想從我的iPhone回答這個短響應)