无法从Singleton或Property中公开Constants

时间:2009-10-14 17:43:35

标签: c#

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公开为属性,以便稍后可以将其与静态Instance属性一起使用。我想你不能用常数来做这个吗?

5 个答案:

答案 0 :(得分:4)

在静态方法中使用似乎已关闭。删除后会发生什么?

答案 1 :(得分:3)

您需要在this.之前移除someDiscount。常量本质上是静态的,无法使用实例限定符访问。

那就是说,这是一种有点不同寻常的模式。字段常量并且永远不会改变,在这种情况下,您倾向于将其暴露出来......

public const decimal SomeDiscount = 3M;

...或不是常量,所以你不会想要一个明确命名的常量,但只是从属性返回...

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

......两者似乎有些矛盾。

答案 2 :(得分:3)

删除关键字,常量自动为静态

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

答案 3 :(得分:0)

你不能使用这个限定符,因为它是多余的。有效将返回someDiscount或返回MySingletonClass.someDiscount。

将const视为静态。

答案 4 :(得分:0)

Somediscount不应该是静态的(对于我试图通过我的iPhone回答此问题的简短回复感到抱歉)