gpt4 book ai didi

c# - 多选枚举

转载 作者:行者123 更新时间:2023-11-30 19:39:57 24 4
gpt4 key购买 nike

我最近开始一个项目,我有一个问题。

假设我正在处理一个 Person 类,一个人可能会遇到一种(或多种)疾病。所以我创建了一个枚举:

 public enum diseases{headache,throat,bruise,gunshot,none}; // enum containing all the diseases
public diseases disease;

然后在代码中我为那个人设置了某种疾病并且它工作正常。

问题是,在我的项目中可能有一个人可能患有 2 种疾病。所以有我的问题:

  1. 在这里使用枚举是最好的选择吗?我希望我的代码得到组织和理解,这是使用枚举的主要原因。
  2. 如果使用枚举是一个不错的选择,我已经设法将这个枚举与位标志结合起来(使用 [System.Flags]),所以当时间到了我可以检查 疾病 包含来自枚举的两个不同值。这是一个好方法吗?
  3. 如果使用枚举是一个不错的选择,我是否应该只从 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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com