首页 / C# / c#-如何将int转换为选定的枚举?
c#-如何将int转换为选定的枚举?
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了c#-如何将int转换为选定的枚举?,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2071字,纯文字阅读大概需要3分钟。
内容图文
![c#-如何将int转换为选定的枚举?](/upload/InfoBanner/zyjiaocheng/684/590359fd834741e18cbb941c1aa75384.jpg)
以前的开发人员(已不再与我们合作,所以我不能问他)做了一件很漂亮的事,我真的不明白.我们有这个枚举:
[Flags]
public enum SidingTypePreference
{
[Value(Name = "Vinyl")]
Vinyl = 1,
[Value(Name = "Metal or Aluminum")]
MetalOrAluminum = 2,
[Value(Name = "Composite")]
Composite = 4,
[Value(Name = "Wood")]
Wood = 8,
[Value(Name = "Other")]
Other = 16
}
在数据库中,SidingTypes存储为单个int,它是所有选定值的总和.
在模型中:
public SidingTypePreference? SidingTypes { get; set; }
在控制器中,table只是查询的行结果:
Model.SidingTypes = table.SidingTypes
并在视图中:
@Html.EditorFor(m => Model.SidingTypes, new { @class = "form-control input-sm", GroupID = "SidingTypePreference", Cols = 1 })
但是,这是我不了解的部分.假设SidingTypes =10.通过某种伏都教魔术,该int转换为:
<input type="checkbox" class="..." name="SidingTypes_0" value="1"> Vinyl
<input type="checkbox" class="..." name="SidingTypes_1" value="2" checked> Metal or Aluminum
<input type="checkbox" class="..." name="SidingTypes_2" value="4"> Composite
<input type="checkbox" class="..." name="SidingTypes_3" value="8" checked> Wood
<input type="checkbox" class="..." name="SidingTypes_4" value="16"> Other
(仅编辑类以防止需要滚动,但它们都是“ lookup-checkbox-SidingTypes”.)
根据该int的值,它知道哪些已检查,哪些未检查.
第一个问题:这是本机.NET吗?还是我需要找到一些扩展方法或模板?
第二个问题:我需要做的是,独立于其他任何事情,建立一种确定是否选择了枚举的方法.
就像是:
private bool IsSelected(int SidingTypes, SidingTypePreference sidingTypePreference)
{
... ?? ...
return true or false;
}
解决方法:
Is this native .NET?
部分是.具有Flags属性的枚举将值分解为组成该复合值的等效位(例如10 = 2 8)
将该值转换为一组复选框不是本机的.我怀疑项目中某个地方有一个自定义模板,可将枚举值转换为一组复选框
How do I determine if an enum is selected.
只需使用按位运算:
private bool IsSelected(int SidingTypes, SidingTypePreference sidingTypePreference)
{
return (SidingTypes & (int)sidingTypePreference) != 0;
}
自&运算符将返回一个数字,其中包含SidingTypes和sidingTypePreference中的“选定”位.如果没有标志匹配,则结果将全为零;否则,结果为全零.因此,除0以外的任何数字均表示匹配.
内容总结
以上是互联网集市为您收集整理的c#-如何将int转换为选定的枚举?全部内容,希望文章能够帮你解决c#-如何将int转换为选定的枚举?所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。