2017-02-15 49 views
4

我對Enum感到困惑。這是我的枚舉如何從枚舉中獲取字符串值

enum Status 
{ 
    Success = 1, 
    Error = 0 
} 


public void CreateStatus(int enumId , string userName) 
{ 
    Customer t = new Customer(); 
    t.Name = userName; 
    // t.Status = (Status)status.ToString(); - throws build error 
    t.Status = //here I am trying if I pass 1 Status ="Success", if I pass 0 Status = "Error" 

} 

錯誤 - 不能把字符串轉換到enum.Status

public class Customer 
{ 
    public string Name { get; set;} 
    public string Status {get; set;} 
} 

如何設置客戶的狀態屬性objecj使用枚舉狀態?

(沒有if-else或開關梯)

+0

http://stackoverflow.com/questions/309333/enum-string-name-from-value –

+0

@KeertiSystematixInfotech,感謝有用的鏈接:) –

回答

2

你只需要調用.ToString

t.Status = Status.Success.ToString(); 

ToString() on Enum from MSDN

如果你有枚舉標識過去了,你可以運行:

t.Status = ((Status)enumId).ToString(); 

它強制轉換爲枚舉值的整數,然後調用ToString()

EDIT(更好的方法): 你甚至可以改變你的方法:

public void CreateStatus(Status status , string userName) 

,並稱之爲:

CreateStatus(1,"whatever"); 

,並轉換爲字符串:

t.Status = status.ToString(); 
+0

我傳遞(int)enumId它可以是0或1.我怎樣才能以這種方式映射 –

+0

@ Kgn-web檢查我編輯的答案,你需要將int轉換爲enum – wudzik

+0

是的。得到它了。 :) 謝謝 –

1

它很容易,你可以使用ToString()方法來獲得枚舉的字符串值。

enum Status 
{ 
    Success = 1, 
    Error = 0 
} 

string foo = Status.Success.ToString(); 

更新

它更容易,如果你有枚舉的你的方法的輸入範圍內像下面的類型:

public void CreateStatus(Status enums, string userName) 
{ 
    Customer t = new Customer(); 
    t.Name = userName; 
    t.Status = enums.Success.ToString(); 

}