这个问题在我脑海里已经有一段时间了,抱歉,如果它看起来很主观。在数据对象的公共(public)属性和构造函数中使用 bool 有一些缺点。以以下代码为例。
使用 boolean :
public class Room
{
public string Name { get; set; }
public bool Bookable { get; set; }
public Room(string name, bool bookable);
}
以及该类的使用
Room r = new Room ("101", true);
这是适当的功能,但是还有另一种方法来实现它:
使用枚举:
public enum BookingStatus
{
Bookable,
NotBookable
}
public class Room
{
public string Name { get; set; }
public BookingStatus Bookable { get; set; }
public Room(string name, BookingStatus bookable);
}
以及该类的使用
Room r = new Room ("101", BookingStatus.Bookable);
对我来说,两者在功能上似乎是等效的,但是各自都有一些优点和缺点:
- 设置属性时,Enum 方法更加详细(您可以仅从代码中推断出枚举的用法)
- 可以扩展枚举以支持更多状态(对于 API 特别有用)
- 枚举需要大量输入(尽管大大减少了输入)
- 枚举不能在条件语句中使用(即 if (r.bookable)),尽管我知道解决这个问题很简单。
我是否遗漏了一些东西,完全偏离了目标?我不知道为什么这让我如此烦恼,也许我太强制症了!
最佳答案
仅仅因为代码的可读性和理解性,我将使用枚举而不是 boolean 值。
对比一下BookingStatus.Bookable
和true
,当然阅读BookingStatus.Bookable
你会明白更多。
也像 fforw 提到的那样,如果将来您可能需要添加更多选项,枚举会更容易更改。
关于.net - 两个成员枚举与 boolean 值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1686591/