使用char而不是字符串来表示单字符值有什么好处吗?

Joh*_*ant 5 .net string types

对于.NET字段和属性,根据定义只包含单个字符,将它们定义为char而不是字符串有什么好处?或者是char数据类型的错误使用?

我想的是一个字段,可以保存M或F的性别,或中间的初始,或存储在数据库中的指标作为Y或N.我通常将这些定义为字符串,但我想知道我是否应该将它们定义为char而不是.

Nol*_*rin 12

是的,这char是正确的数据类型.一般的经验法则是:始终在上下文中选择可能的最窄(最严格)数据类型.这意味着如果意外输入任何无效(或超出范围)数据,将无法接受,因此您的程序/数据库将变得不易出错.

从另一个角度考虑它:当想在代码中使用整数值时,你是否创建了一个大小为1的整数数组?当然不是,因为虽然它可以完成这项工作,但却没有必要.即比较:

int[] value = new int[1] { 123 };
value[0] = 456;
Run Code Online (Sandbox Code Playgroud)

至:

int value = 123;
value = 456;
Run Code Online (Sandbox Code Playgroud)

第一个是简单的荒谬,我相信你会看到.确实,这在数据库的上下文中并不那么明显(如果选择string数据类型,使用情况就这么简单),但我认为这个类比有助于解释选择背后的逻辑.

此外,当涉及到操作代码中的值时,您应该发现在更合适的数据类型(即char)中使用该字段使得在代码中适当地使用它会稍微简单一些.

在性能方面,我不认为使用string会给你带来任何重大开销.好了,所以它占用稍微更多的内存,但是这可能不是一个问题.但我认为我刚提出的其他原因解释了为什么你应该选择char.

  • 是的,这里有两个主要原因:限制和防止无效数据. (2认同)