如何在C#中声明一个局部常量?

如何在C#中声明一个局部常量?

与在Java中一样,您可以执行以下操作:

public void f(){ final int n = getNum(); // n declared constant } 

如何在C#中做同样的事情? 我尝试使用readonlyconst但似乎没有工作。

任何帮助将不胜感激。

谢谢。

在C#中,您无法创建从方法检索的常量。

编辑:死链接http://msdn.microsoft.com/en-us/library/e6w8fe1b(VS.71).aspx

该文档应该有所帮助: https : //docs.microsoft.com/en-us/dotnet/csharp/language-reference/keywords/const

常量表达式是一个可以在编译时完全计算的表达式。

将您的局部变量声明为迭代变量。 迭代变量是只读的(你没有要求一个漂亮的解决方案)。

 public void f() { foreach (int n in new int[] { getNum() }) // n declared constant { n = 3; // won't compile: "error CS1656: Cannot assign to 'n' because it is a 'foreach iteration variable'" } } 

我不确定为什么readonlyconst不适合你,因为这些是你需要的关键字。 如果你有一个文字(数组文字除外)和readonly你使用const

 public void f() { const int answer = 42; } private readonly int[] array = new int[] { 1, 2, 3, 4 }; private readonly DateTime date = DateTime.Now; public void g() { Console.WriteLine(date.ToString()); } 

readonly仅适用于类级别(即,您只能将其应用于字段)。 另外,作为const需要文字的结果,它本身是静态的,而readonly字段可以是静态的或实例的。

有一种需要ReSharper的解决方法。 你无法获得只读的本地人,但你至少可以检测到变异的并用不同的颜色。

使用字体和颜色项目Resharper Mutable局部变量标识符

对我来说,我有当地人的颜色为灰色,然后我为突变变量选择了一个大胆的白色(这是一个黑暗的主题)。 这意味着,与常规变量相比,任何写入多次的变量都会显示出明亮的变化。 然后,您可以尽力避免使用变异变量,或者如果方法确实需要变量,那么它至少会突出显示。

在您给出的示例中,您需要将变量声明为static ,因为您正在使用方法调用对其进行初始化。 如果使用常量值(如42)进行初始化,则可以使用const 。 对于类,结构和数组, readonly应该可以工作。

截至2018-10-02,c#中不可能只有一个本地读取,但是有一个关于该function的公开提案正在进行讨论 。

本文提供了有用的摘要。

const关键字用于修改字段或局部变量的声明。

来自MSDN 。

由于C#无论如何都不能强制执行“const correctnes”(比如c ++),我认为它不是很有用。 由于function范围非常窄,因此很容易失去监督。