3

在java中它可以做这样的事情

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

...

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

只要 generateInt 是最终的,就会编译。

C#中是否有等价物?

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

4

1 回答 1

6

使用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 - 交换机

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

您可以将 if...else 用于您的场景。

于 2012-07-18T11:47:54.970 回答