我可以轻松控制在开始时没有选择,用户决定设置是或否。总而言之,三值逻辑的标准示例。
所以我的第一个想法是采取可以考虑的bool来坚持下去。通常情况下,这会让我感到烦恼if (var == null) { ... }
(或类似的东西)。
第二个想法把我带到了Enums。
public enum Selection
{
Yes,
No,
NotChoosenYet
}
在我的背景下,这给布尔皈依者带来了一些恩赐,但这不是一个表演者。
总而言之,我倾向于选择“Enum-way”,因为它更具可读性。 我搜索了一段时间,但找不到一个问题让我上了9月。
有没有更好的方法我还没有考虑过?也许一个标准的.Net-Type可以让思考变得更容易?
答案 0 :(得分:4)
我坚持使用ENUMS。
我在一秒钟内想到的三个原因:
答案 1 :(得分:2)
我会坚持使用可以为空的布尔值,因为这就是你在数据库中表示它的方式。
NULL,Yes或No。
来自Nullable Types (C# Programming Guide)
Nullable类型是Nullable结构的实例。可以为空的类型 可以表示其基础值的正确值范围 类型,加上一个额外的空值。例如,Nullable, 发音为“Nullable of Int32”,可以赋予任何值 -2147483648到2147483647,或者可以为其指定空值。可以为Nullable赋值true false或null。的的 特别是将数字和布尔类型赋值为null的能力 在处理数据库和其他数据类型时很有用 包含可能未赋值的元素。例如,a 数据库中的布尔字段可以存储值true或false,或者它 可能未定义。
同样来自Using Nullable Types (C# Programming Guide)
有关何时可以使用可空类型的示例,请考虑如何使用 普通的布尔变量可以有两个值:true和false。那里 没有值表示“未定义”。在许多编程中 应用程序,尤其是数据库交互,可以发生变量 处于未定义的状态。例如,数据库中的字段可能包含 值true或false,但它也可能根本不包含任何值。 类似地,可以将引用类型设置为null以指示它们 没有初始化。
答案 2 :(得分:1)
我会模仿它存储在数据库中的方式。如果它在db中为null,true和false,则在c#-code中使用null,yes,no。它是未定的,是的,在db中没有然后在c#-code中使用枚举。只是因为这对下一个人来说会更容易。
如果我在这两者之间做出选择,那么enum看起来会更好。