2012-07-18 27 views
1

做這樣的事情C#在java中它可能分配const成員與功能

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

...

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

只要generateInt是最終的,這個編制。

在C#中有一個等價物嗎?

編輯:你可能會問爲什麼我不使用具體的值或枚舉,但我有我的理由爲什麼值是隨機的。 ;)

回答

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語句中指定變量或只讀,它必須是常量表達式/編譯時間常量。

MSDN - Switch

每個案例標籤指定的恆定值。

您可以使用if ... else作爲您的場景。

+0

儘管這不是最好的例子,因爲方法中的'1'是編譯時常量。 – 2012-07-18 11:54:03

+0

@TimSchmelter,你說得對,修改它爲'DateTime.Now.Millisecond' – Habib 2012-07-18 11:55:58

+0

謝謝,在我的代碼中,這導致下一個問題,因爲我在開關箱中使用它們。 '錯誤CS0150:預計有一個常量值' – clamp 2012-07-18 12:18:59