选择正确的数据类型与强制转换
本文关键字:转换 数据类型 选择 | 更新日期: 2023-09-27 18:34:57
我正在努力学习编写好的C#代码,我需要你的建议。
例如,如果我有一个小于 255 的无符号数字值,则此值适合byte
类型。但是此值不会用作字节,而是用作设置组合框索引的Int
,因此需要强制转换。
我的问题是,在编写好的 C# 代码时,我需要担心多少数据类型?是否需要将此值声明为Int
以避免强制转换?
谢谢你的时间。
从byte
到int
的投射是安全的,因为int
比byte
宽,所以不会丢失数据。
但是,如果您将变量定义为byte
但实际上一直将其强制转换为int
,则最好将其设为int
,因为您只会混淆自己和代码的其他读者。
如果需要它成为int
,请使用int
。
数据类型很重要,但代码可读性的问题也很重要 - 必须到处强制转换会降低可读性。
答案是肯定的。
当你需要使用不是很大的整数值时,你应该避免使用/强制转换为任何其他类型,但int
除非你有需要。就像您发送此数据的带宽有限一样。
数据类型是良好编码的基础 - 它允许编译器为您进行大量检查,因此有助于消除/突出显示错误。
在您的示例中,您可以使用 ushort 来存储您的数字,但除非您正在编写一个对内存非常敏感的应用程序,否则您最好使用 int,因为许多库调用无论如何都需要将参数转换回整数。 (由于常量类型转换,这将使您的代码可读性降低 - 并且可能效率较低(
随着我们计算机上当前可用的内存量,当需要在字节或整数之间进行选择时,内存不再是问题。
我想补充一点,int 更容易处理。
的设计不应取决于控件显示(或保存到数据存储(的方式。如果我看到 byte
类型的属性,那么它会告诉我我的数据类型需要什么值范围。例如 Color
类具有R,G,B
类型为 byte
的自描述性属性。
也不要过早进行优化 - 如果它成为性能问题(我怀疑从字节转换为 int 会对系统性能产生重大影响(,那么您可以稍后优化问题代码。
顺便说一句,从字节到 int 的转换是隐式的,因此您无需手动执行此操作:
comboBox.SelectedIndex = myObj.ByteProperty;
谢谢你们的回答。我无法接受一个答案,因为它们相辅相成,所以我决定将它们分组。
- CPU 旨在高效处理 32 位值(链接问题(。
- 无需过早进行优化。
- 始终强制转换数据类型效率不高。
- 声明某种类型的变量并始终强制转换它会降低代码的可读性。