Mar*_*tin 16 c# enums casting switch-statement
任何人都可以告诉我为什么我需要从我的枚举中转换为Int
switch (Convert.ToInt32(uxView.SelectedValue))
{
case (int)ViewBy.Client:
Run Code Online (Sandbox Code Playgroud)
如果我删除了演员(int)它失败并说我必须使用演员表.
这是我的枚举,枚举是整体的......任何人都知道这个吗?
public enum ViewBy
{
Client,
Customer
}
Run Code Online (Sandbox Code Playgroud)
Ant*_*lev 11
在C#enum中,不只是数字.相反,它们是与上下文中具有名称的类型或数字相关联的数字.
为了避免在case语句中进行强制转换,您可以进行强制转换switch:
switch((ViewBy)Convert.ToInt32(uxView.SelectedValue))
Run Code Online (Sandbox Code Playgroud)
然而,这有其自身的问题.例如,这段代码将写入7控制台.
enum ViewBy
{
ChuckNorris = 1,
JamesBond
}
Console.WriteLine((ViewBy)7);
Run Code Online (Sandbox Code Playgroud)