在Delphi中,您可以在方法中声明一个常量,并在同一方法中为其赋值。我们的想法是,下次使用此方法时,const仍将具有与上次分配的值相同的值。
在Delphi中看起来像这样:
(我不会在这里使用Delphi,因此未经测试,对此感到抱歉,但这足以证明我的意思)
procedure Form1.test;
const
AssignableConst: Integer = 0;
begin
ShowMessage(AssignableConst);
inc(AssignableConst);
end;
每次调用程序测试时,消息框都会显示最后一个值+ 1
这个例子完全没用我知道它只是为了展示一个可赋值的const如何在Delphi中工作。
c#中是否有相同的内容? 我不想要一个涉及类中私有变量的解决方案,它必须留在方法中。
我的问题是关于范围。没有其他的。我不在乎这个值是对象状态的一部分。这并不重要。重要的是我需要一个只能从方法范围访问的变量,而不是其他任何地方 在Delphi中,这可以通过使用可赋值的const来完成,那么我该如何在C#中执行此操作?
答案 0 :(得分:10)
我不想要一个涉及类中私有变量的解决方案,它必须留在方法中。
但是该值是对象状态的一部分(或静态方法的类型) - 所以它是在对象中声明的字段是有意义的。
C#中没有与此相同的内容。您可以做的最好的事情是拥有一个私有变量和文档,它只能从特定方法中使用。 (如果你真的想要,你可以为它编写基于Roslyn的测试。)
答案 1 :(得分:1)
最接近的是:
class MyClass
{
static Action CreateCounter()
{
int counter = 0;
return () => {
Show(counter);
counter++;
};
}
Action showAndIncrementCounter = CreateCounter();
public ShowAndIncrementCounter()
{
showAndIncrementCounter();
}
}
但我仍然建议使用实例字段作为计数器的简单解决方案,而不是从方法外部访问它。