c#:当在switch语句中使用时,为什么需要从枚举转换为INT?枚举就是INT
有人能告诉我为什么需要从枚举中转换为Int吗c#:当在switch语句中使用时,为什么需要从枚举转换为INT?枚举就是INT,c#,enums,casting,switch-statement,C#,Enums,Casting,Switch Statement,有人能告诉我为什么需要从枚举中转换为Int吗 switch (Convert.ToInt32(uxView.SelectedValue)) { case (int)ViewBy.Client: 如果我删除强制转换(int),它会失败,并说我必须使用强制转换 这是我的枚举,枚举是整数。。。。有人知道这件事吗 public enum ViewBy { Client, Customer }
switch (Convert.ToInt32(uxView.SelectedValue))
{
case (int)ViewBy.Client:
如果我删除强制转换(int),它会失败,并说我必须使用强制转换
这是我的枚举,枚举是整数。。。。有人知道这件事吗
public enum ViewBy
{
Client,
Customer
}
您应该使用将字符串值转换为枚举 此外,枚举的底层类型不一定必须是Int32。在C#
enum
s中不仅仅是数字。相反,它们是与类型关联的数字,或者是上下文中具有名称的数字
要避免在case
语句中强制转换,可以执行强制转换开关
:
switch((ViewBy)Convert.ToInt32(uxView.SelectedValue))
然而,这也有其自身的问题。例如,这段代码将向控制台写出7
enum ViewBy
{
ChuckNorris = 1,
JamesBond
}
Console.WriteLine((ViewBy)7);
枚举
在.NET typesystem中是而不是整数
框架借助离散整数值存储它们-这是另一回事 托马斯来自: 每种情况下的常量表达式 标签被转换为 表达与比较 等式表达式。控制 传递给其大小写为的语句 常量表达式与值匹配 表达方式
没有从enum到int的隐式转换,因此每个
案例
都需要显式转换。但是请注意,最初打开正确类型的表达式比强制转换每个大小写更有意义(请参见)。我认为在这种情况下,转换为int和all看起来有点蹩脚
假设您向该方法传递了int而不是enum,请记住:
顺便说一句,与字符串相比,转换为int并将其与另一个int进行比较更简单。在回答“有人能告诉我为什么需要从枚举转换为int”的问题时 必须强制转换为整数,因为枚举值不是整数。枚举具有可存储为整数类型的基础值(默认值为int) 您可以使用以下命令确定基础类型:
Enum.GetUnderlyingType( typeof(ViewBy) );
您可以找到更多详细信息,为什么需要强制转换为int?
如果uxView.SelectedValue是一个ViewBy枚举,那么简单地(ViewBy)uxView.SelectedValue就足够了,对吗?听起来像
SelectedValue
是字符串,这里的问题是什么?!?!?做tell@jordan.peoples如果您仍然感兴趣,请查看我的更新。迟到总比不迟到好,嗯:)
switch ( expression )
case constant-expression : statement
[default : statement]
Enum.GetUnderlyingType( typeof(ViewBy) );