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属性一起使用。我想你不能用常数来做这个吗?
答案 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回答此问题的简短回复感到抱歉)