【发布时间】:2017-05-01 01:05:42
【问题描述】:
在 Delphi 中,您可以在方法中声明一个常量并在同一方法中为其赋值。这个想法是,下次您使用此方法时,const 仍将具有您上次分配的相同值。
在 Delphi 中看起来像这样:
(我这里没有 Delphi,所以它未经测试,对此感到抱歉,但这足以证明我的意思)
procedure Form1.test;
const
AssignableConst: Integer = 0;
begin
ShowMessage(AssignableConst);
inc(AssignableConst);
end;
每次调用过程测试时,消息框都会显示最后一个值 + 1
这个例子完全没用,我知道它只是为了展示一个可赋值的 const 在 Delphi 中是如何工作的。
在 c# 中有没有等价物?
我不想要一个涉及类中私有变量的解决方案,它必须留在方法中。
我的问题是关于范围的。没有其他的。我不在乎值是对象状态的一部分。那不重要。重要的是我需要一个只能从方法范围访问的变量,其他任何地方都无法访问。
在 Delphi 中,这可以通过使用可分配的 const 来完成,那么如何在 C# 中做到这一点?
【问题讨论】:
-
“我不想要一个涉及类中私有变量的解决方案,它必须留在方法中。”为什么?隐藏持久状态听起来像是一个可疑的想法。
-
长话短说 - 这是一个不错的功能,但它不受支持。
-
实际上,您的 Delphi const 是每个应用程序的全局变量,而不是实例类。您的示例不使用类实例。
-
本地可写 const 对于每个应用程序都是全局的,即使在类实例中使用时也是如此,并且在实例之间共享。你到底想达到什么目的?
-
@CodesInChaos:Delphi 的“可写常量”相当于 C 和 C++ 中的静态局部变量。没有错。它具有方法的范围,而不是类的范围。这有它的优势,对其他人“隐藏”它并没有错。