C#为const成员分配函数

时间:2012-07-18 11:47:11

标签: c# java

在java中可以做这样的事情

class {
    final int x = Random.randomInt();
    final int y = Random.randomInt();
}

...

switch (intVariable)
{
    case x: break;
    case y: break;
}

只要generateInt为final,就会编译。

C#中有等价物吗?

编辑:你可能会问为什么我不使用具体的值或枚举,但我有我的理由为什么值是随机的。 ;)

1 个答案:

答案 0 :(得分:4)

const你不能这样做,它必须是一个编译时常量。

您可以使用readonly,例如:

public class yourClass
    {
        public readonly int x = generateInt();

        public static int generateInt()
        {
            return DateTime.Now.Millisecond; // or any other method getSomeInt();
        }
    }

编辑: 因为现在编辑了这个问题,并在switch语句中引用了case表达式。您不能在case语句中指定变量或只读,它必须是常量表达式/编译时常量。

来自MSDN - Switch

  

每个案例标签都指定一个常量值。

您可以使用if ... else来表示您的方案。