C# 带int的位移位枚举条件
这主要是学术性的。只是试图理解为什么这不起作用,以及如何正确地做到这一点 我在数据库中存储一个0 1或2,其中每个表示不同的状态标志。(这在生产中无法更改) 在我的代码中,我有一个枚举C# 带int的位移位枚举条件,c#,enums,C#,Enums,这主要是学术性的。只是试图理解为什么这不起作用,以及如何正确地做到这一点 我在数据库中存储一个0 1或2,其中每个表示不同的状态标志。(这在生产中无法更改) 在我的代码中,我有一个枚举 public enum Status{ Active = 0, Voided = 1<<0, Refunded = 1<<1 } 。。。等等 但我很好奇是否有更简单的方法 基本上,我如何用尽可能少的代码在Int32和位移位枚举之间快速转换 我试过这么做 re
public enum Status{
Active = 0,
Voided = 1<<0,
Refunded = 1<<1
}
。。。等等
但我很好奇是否有更简单的方法
基本上,我如何用尽可能少的代码在Int32和位移位枚举之间快速转换
我试过这么做
return dbVal | Status.Active;
return 1 << Convert.Int32(dbValue);
返回dbVal | Status.Active;
返回1对于所显示的枚举,以下操作将起作用:
int dbValue = ...;
var status = (Status)dbValue;
如果数据库值只能取三个值中的一个-0(活动)、1(作废)、2(退款)-那么将枚举设置为以下等效值可能会更清楚
public enum Status
{
Active = 0,
Voided = 1,
Refunded = 2
}
您使用的位移位表示一个位字段,但这不是您实际要处理的。让Status.Voided | Status.returned没有意义代码>对于显示的枚举,以下操作将起作用:
int dbValue = ...;
var status = (Status)dbValue;
如果数据库值只能取三个值中的一个-0(活动)、1(作废)、2(退款)-那么将枚举设置为以下等效值可能会更清楚
public enum Status
{
Active = 0,
Voided = 1,
Refunded = 2
}
您使用的位移位表示一个位字段,但这不是您实际要处理的。让Status.Voided | Status.returned没有意义
因此,如果我想使用位移位枚举,那么数据库中应该存储什么值?AMR我不完全理解这个问题。如果我想使用位移位格式,比如使用100个不同的枚举选项。在数据库中存储该值的正确方法是什么?因为现在我基本上只存储枚举选项I的索引want@AMR我想我一开始不明白改变格式的动机。通常情况下,如果有人决定要紧凑地表示一个小的布尔数组,就需要这样做。例如,考虑代码<代码>枚举类型{None=0,carsis=1,那么作为将来的参考,如果我想使用位移位枚举,数据库中应该存储什么值?@AMR我不完全理解这个问题。如果我想使用位移位格式,比如说使用100个不同的枚举选项。在数据库中存储该值的正确方法是什么?因为现在我基本上是storing枚举选项I的索引want@AMR我想我不理解一开始有点移动格式的动机。通常情况下,如果有人决定要紧凑地代表一小部分布尔值。考虑例如:代码> EnUM CyType {No==0,苛性碱=1。