【发布时间】:2014-11-24 10:36:17
【问题描述】:
我想要做的是允许在我的类中公开递增一个整数值,但不允许公开设置它。
我知道我可以创建这样的函数:
void IncrementMyProperty()
但我想允许用户这样做:
MyClass.Property++;
不允许这样做:
MyClass.Property = <SomeInt>;
这只是为了方便。我只是想知道是否有任何方法可以做到这一点。
这是一个例子:
class MyClass
{
private int _count;
public int Count
{
get { return _count; }
private set { _count = value; }
}
public void AddOne()
{
_count++;
}
}
class Program
{
static void Main()
{
MyClass example;
for (int i = 0; i < 10; i++)
example.Count++;
}
}
显然这不会编译。这只是为了表明我想做什么。
【问题讨论】:
-
如果不做一些愚蠢的事情,比如提到的运算符重载,这是不可能的。这可能是为了方便,但您最终会生成难以维护的代码。
-
我就是这么想的。不过谢谢!
-
谁方便?该方法方式是一个清晰且可预测的解决方案。允许 ++ 但不允许 = 不是那么方便而是令人困惑,还是你一个人?
-
@TaW 我不认为它令人困惑。理论上,如果其他人试图错误地使用我的课程,我使用
=他们会收到一个异常,解释为什么不能那样使用它。无论如何,这只是一个难题。
标签: c# private-members post-increment