以下不起作用,因爲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;
}
}
以下不起作用,因爲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;
}
}
正如你所說的,你不能:枚舉必須在編譯時而不是在運行時定義。 不要用不同的班級去,只是讓富只讀屬性:
public int foo
{
get
{
return w*a;
}
}
foo實際上會擁有多個值。這就是爲什麼它首先是一個枚舉。忽略僞代碼只保存一個值的事實。所以雖然答案在技術上是正確的,但這個例子並沒有解決我的問題。 – bwoogie
是的,'enum'成員定義必須是編譯時間常量。 「foo」是否更適合成爲一個班級完全取決於你將如何使用它。 –
枚舉不應該明確地從'int'派生:它們已經隱含地執行了...... –
關於如何使用枚舉的想法看起來很不明確。這裏有一個可能有用的例子:'enum myFirstInts {one,two,three}'你可以像'myFirstInts myFirstEnumVar = myFirstInts.one;'或甚至'myFirstInts myFirstEnumVar = 0;'( - >它指的是一)。 – varocarbas