2012-08-16 82 views
30

根據數據庫返回了哪些設置我的枚舉值時,如何將我寫的內聯IF語句在我的C#類服務?在線IF語句在C#

例如:當返回的數據庫值是1,則枚舉值設置爲VariablePeriods,則當2 FixedPeriods。

希望能對你有所幫助。

回答

56

字面上的答案是:

return (value == 1 ? Periods.VariablePeriods : Periods.FixedPeriods); 

注意,內聯if語句,就像if語句,只爲檢查true或false。如果(價值== 1)評估爲假,它可能並不一定意味着價值== 2,因此,會是這樣更安全:

return (value == 1 
    ? Periods.VariablePeriods 
    : (value == 2 
     ? Periods.FixedPeriods 
     : Periods.Unknown)); 

如果你添加更多的價值內嵌如果將變得不可讀和開關將是首選:

switch (value) 
{ 
case 1: 
    return Periods.VariablePeriods; 
case 2: 
    return Periods.FixedPeriods; 
} 

約枚舉的好處是,他們有一個值,這樣你就可以使用的值的映射,如user854301建議。這樣可以防止不必要的分支,從而使代碼更具可讀性和可擴展性。

+0

@Ysterhak:很高興幫助。我仍然想知道爲什麼你更喜歡使用按照user854301 – chiccodoro 2012-08-16 08:29:26

4

你可以做內聯IFS與

return y == 20 ? 1 : 2; 

如有虛假,這將給你1,如果真和2。

12

你可以定義你的enum像這樣和使用在需要的地方

public enum MyEnum 
{ 
    VariablePeriods = 1, 
    FixedPeriods = 2 
} 

使用

public class Entity 
{ 
    public MyEnum Property { get; set; } 
} 

var returnedFromDB = 1; 
var entity = new Entity(); 
entity.Property = (MyEnum)returnedFromDB; 
+0

這樣看看,因爲它阻止分支。 – chiccodoro 2012-08-16 07:02:48

+0

已經在我的實體類中有這個。需要根據服務類中從數據庫返回的內容設置Enum。這就是爲什麼我需要做一個內聯IF聲明? – Landi 2012-08-16 07:06:41

+0

都能跟得上你可以簡單地設置您需要的屬性 – user854301 2012-08-16 07:09:21

0

枚舉爲int:(int)Enum.FixedPeriods

詮釋,以枚舉:(Enum)myInt