可以在运行时分配一个const变量吗? C#

时间:2018-03-08 05:21:34

标签: c#

我想要这种方法。

Map<Integer, Integer> map = new HashMap<Integer, Integer>();
for (Map.Entry<Integer, Integer> entry : map.entrySet()) {
    System.out.println("Key = " + entry.getKey() + ", Value = " + entry.getValue());
}

在运行时

const public int x;

有可能吗?

3 个答案:

答案 0 :(得分:8)

您无法在运行时为const变量赋值,但仍然可以在逻辑上实现您的需求,

您可以创建静态只读属性和静态构造函数,并从静态构造函数

中指定值
public class ClassName
{
    static readonly int x;

    static ClassName()
    {
        x = 10;
    }
}

编译器对const属性和静态属性的作用相同,内存分配也相同

  

所有常量声明都是隐式静态

ref https://blogs.msdn.microsoft.com/csharpfaq/2004/03/12/why-cant-i-use-static-and-const-together/

答案 1 :(得分:1)

不,你不能。

  • const表示标记为const的成员的每个实例都将在编译
  • 期间替换为其值
  • readonly 成员将在运行时解决。

答案 2 :(得分:1)

使用const是不可能的。 const应该在编译时初始化。

然而,有一个替代方案。您可以使用readonly,您可以在运行时通过构造函数初始化它。

有关详细信息,请参阅 https://docs.microsoft.com/en-us/dotnet/csharp/programming-guide/classes-and-structs/constants

https://www.safaribooksonline.com/library/view/c-cookbook/0596003390/ch03s25.html