作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我最近开始一个项目,我有一个问题。
假设我正在处理一个 Person
类,一个人可能会遇到一种(或多种)疾病。所以我创建了一个枚举:
public enum diseases{headache,throat,bruise,gunshot,none}; // enum containing all the diseases
public diseases disease;
然后在代码中我为那个人设置了某种疾病
并且它工作正常。
问题是,在我的项目中可能有一个人可能患有 2 种疾病。所以有我的问题:
[System.Flags]
),所以当时间到了我可以检查 疾病
包含来自枚举的两个不同值。这是一个好方法吗?diseases
创建第二个属性(就像我创建 disease
一样)并省去使用位的所有麻烦-旗帜?在此先感谢您对此事的任何了解,无法确定这里最好的方法是什么。
最佳答案
一个不错的选择是制作 List<diseases>
为一个人保留。
public class Person
{
public string Name { get; set; }
public List<diseases> Diseases { get; set; }
public Person(string name)
{
this.Name = name;
Diseases = new List<diseases>();
}
}
通过这种方式,您可以相对轻松地枚举所有值,而不必担心标志。
例如:
var bob = new Person("bob");
bob.Diseases.Add(diseases.gunshot);
var hasHeadache = bob.Diseases.Any(x => x == diseases.headache);
关于c# - 多选枚举,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25488951/
我是一名优秀的程序员,十分优秀!