2015-11-30 101 views
0

以下不起作用,因爲w和h需要爲const's。我假設Enums必須在編譯時設置,並且不能在運行時更改。這是一種可能性,還是僅僅讓foo上課更好?使用變量設置枚舉值

class Bar 
{ 
    int w, h; 
    enum foo : int 
    { 
     a = w * h 
    } 

    public Bar(int w, int h) 
    { 
     this.w = w; 
     this.h = h; 
    } 
} 
+1

是的,'enum'成員定義必須是編譯時間常量。 「foo」是否更適合成爲一個班級完全取決於你將如何使用它。 –

+2

枚舉不應該明確地從'int'派生:它們已經隱含地執行了...... –

+0

關於如何使用枚舉的想法看起來很不明確。這裏有一個可能有用的例子:'enum myFirstInts {one,two,three}'你可以像'myFirstInts myFirstEnumVar = myFirstInts.one;'或甚至'myFirstInts myFirstEnumVar = 0;'( - >它指的是一)。 – varocarbas

回答

0

正如你所說的,你不能:枚舉必須在編譯時而不是在運行時定義。 不要用不同的班級去,只是讓富只讀屬性:

public int foo 
{ 
    get 
    { 
     return w*a; 
    } 
} 
+0

foo實際上會擁有多個值。這就是爲什麼它首先是一個枚舉。忽略僞代碼只保存一個值的事實。所以雖然答案在技術上是正確的,但這個例子並沒有解決我的問題。 – bwoogie

1

看來你還沒有完全獲得在C#枚舉的想法。看一看

enum關鍵字用於聲明一個枚舉,一個獨特的類型,它由一組命名的常量稱爲枚舉列表的C#參考(here)。

不能將變量分配給枚舉。你應該看看另一個結構。