是否有一个C#等同于Delphi的可赋值const?

Gui*_*doG -5 c# scope

在Delphi中,您可以在方法中声明一个常量,并在同一方法中为其赋值.我们的想法是,下次使用此方法时,const仍将具有与上次分配的值相同的值.

它在Delphi中看起来像这样:(
我这里没有Delphi所以它没有经过测试,对此感到抱歉,但它足以证明我的意思)

procedure Form1.test;
const
  AssignableConst: Integer = 0;
begin
  ShowMessage(AssignableConst);
  inc(AssignableConst);
end;
Run Code Online (Sandbox Code Playgroud)

每次调用过程测试时,消息框都会显示最后一个值+ 1

这个例子完全无用我知道它只是为了展示一个可赋值的const如何在Delphi中工作.

在c#中是否存在相同的含义?
我不想要一个涉及类中私有变量的解决方案,它必须留在方法中.

我的问题是关于范围.没有其他的.我不在乎该值是对象状态的一部分.这并不重要.重要的是我需要一个只能从方法范围访问的变量,而不是其他任何地方.
在Delphi中,这可以通过使用可赋值的const来完成,那么我如何在C#中执行此操作?

Jon*_*eet 10

我不想要一个涉及类中私有变量的解决方案,它必须留在方法中.

但是值是对象状态的一部分(或静态方法的类型) - 所以它是对象中声明的字段是有意义的.

在C#中没有与之相当的东西.您可以做的最好的事情是拥有一个私有变量和文档,它只能从特定方法中使用.(如果你真的想要,你可以为它编写基于Roslyn的测试.)

  • 那么也许你应该在它的单独的类中提取方法 (5认同)
  • @GuidoG:我做完了.你很粗鲁,无视网站的目的,而忽略了你已经得到了问题答案的事实. (3认同)
  • @GuidoG:每个实例状态和每个类型状态之间的差异非常重要.你对CodesInChaos的问题的回答非常清楚 - 如果你不想要每个实例状态,你就不应该说"并且每次在方法所属的对象的同一个实例中调用该方法时都不会重置" .*你*可能不关心这种区别,但Stack Overflow的意义在于创建一个高质量问题和答案的存储库 - 如果你说你的原始代码做了一件事实际它做了别的事情你会对未来的读者造成伤害. (2认同)
  • @GuidoG:您对该问题的第五条评论表明您希望每个实例状态.你后来说(上面两条评论)你*不想要每个实例状态.从根本上说,你似乎完全是为了回答你的具体要求,而不考虑未来读者的问题.你已经收到了答案:"你不能用C#做到这一点." 我认为还有什么要说的,真的. (2认同)