我已经看到了多种用于在 INI 文件中设置布尔值的方法:
variable = truevariable = 1variable = onvariable = yes
哪种方式是最规范、最常见和/或首选的方式?
我已经看到了多种用于在 INI 文件中设置布尔值的方法:
variable = truevariable = 1variable = onvariable = yes哪种方式是最规范、最常见和/或首选的方式?
INI 文件没有规范,但不管它值多少钱,我将列出我所知道的语言的一些实现的行为。
Python 的内置configparser模块提供了一个getboolean行为如下:
接受的值...是
'1','yes','true', and'on',它们会导致该方法返回True,以及'0','no','false', and'off',会导致它返回False。
parse_init_file另一方面,在 PHP中:
字符串值"true"、"on"和"yes"被转换为TRUE。"false"、"off"、"no"和"none"被认为是FALSE。
同时,.NET 没有对 INI 解析的内置支持,但其最流行的 INI 解析库ini-parser不提供对值的自动解析的任何支持,并将它们全部作为字符串返回。它的Getting Started示例显示了使用 .NET 解析布尔值Boolean.Parse,它将接受字符串"true"和"false"(任何大小写)并在给出其他任何内容时抛出异常。
总之:INI解析器的不同实现之间在这个问题上绝对没有一致性。
我会推荐:
1and 0。这取决于 ini 文件的解析器。这些值始终是字符串。
true/false:在 C# 中,我可以将 true 和 false 字符串直接转换为 bool。等于可读性和易于转换。更少的代码。
0/1:在转换为 bool 之前,我必须将字符串 0 和 1 转换为 int。较小的 ini 文件大小。可读性较差。更多代码。
是/否和开/关我将不得不使用 if/switch 语句。可读。更多代码。
我的首选方式是真/假。对象序列化为真/假,即使它存储为 0/1,您也可以将真/假与 sql 位类型一起使用。所以唯一的缺点是尺寸在大多数情况下可能很小。