我有這個枚舉它如何工作enum C#?
public enum EstadoPeticion : int
{
PeticionCreada = 1,
PorValidar = 2,
Validada = 3,
Error = 0
}
使用枚舉我要做
(int)EstadoPeticion.PeticionCreada
我爲什麼要投的類型和如何創建不使用投枚舉類型?,我覺得劇組可以是一個不好的做法
我有這個枚舉它如何工作enum C#?
public enum EstadoPeticion : int
{
PeticionCreada = 1,
PorValidar = 2,
Validada = 3,
Error = 0
}
使用枚舉我要做
(int)EstadoPeticion.PeticionCreada
我爲什麼要投的類型和如何創建不使用投枚舉類型?,我覺得劇組可以是一個不好的做法
鑄造不是直接不好的做法。這是一個氣味 ...有跡象可能是潛在不好的做法在附近的某處。
在這種情況下,潛在的不良做法是將Enum
與int
根本進行比較。這通常(並非總是)表明您的設計出現其他問題,int
值也許應該是Enum
,或者您應該使用不同的機制來表示此數據。
而且,再次,它可能會很好。
一個很好的例子是使用數據庫,您需要將Enum
作爲int
存儲在數據庫表中。保存數據時,您會將Enum
轉換爲int
,並在檢索數據時將int
轉換爲Enum
。在這些情況下,演員陣容既合適又需要。
鑄造沒有錯(這不是壞習慣)。如果你想使用枚舉作爲整數,你必須總是投射,這就是枚舉的工作方式。雖然你不一定需要拋出枚舉,因爲你大多應該比較枚舉之間的枚舉。
喜歡本作例子:
if (myenum == PeticionCreada) {
}
你不需要投枚舉。如果你想在誤差爲0,你可以這樣做:
public enum EstadoPeticion
{
Error = 0,
PeticionCreada,
PorValidar,
Validada
}
值的其餘部分將通過1自動遞增。
但如果我想分配這個值一些int它總是有必要使用一個強制轉換? – Fabian
如果要使用與枚舉成員關聯的整數值,則必須進行強制轉換。但是,您不需要枚舉聲明中的「:int」部分。你可以參考這裏關於轉換:https://stackoverflow.com/questions/943398/get-int-value-from-enum-in-c-sharp –
*「我必須做」* - 做什麼?在正確使用時,你當然不必將枚舉強制轉換爲整數。 – poke
爲什麼你必須這樣做?你爲什麼認爲這是一個不好的做法? –
如果我想要做類似這樣的事情:IdEstadoPeticion = EstadoPeticion.PeticionCreada它總是需要強制轉換IdEstadoPeticion = **(int)** EstadoPeticion.PeticionCreada, – Fabian