选择正确的数据类型与强制转换

本文关键字:转换 数据类型 选择 | 更新日期: 2023-09-27 18:34:57

我正在努力学习编写好的C#代码,我需要你的建议。

例如,如果我有一个小于 255 的无符号数字值,则此值适合byte类型。但是此值不会用作字节,而是用作设置组合框索引的Int,因此需要强制转换。

我的问题是,在编写好的 C# 代码时,我需要担心多少数据类型?是否需要将此值声明为Int以避免强制转换?

谢谢你的时间。

选择正确的数据类型与强制转换

byteint的投射是安全的,因为intbyte宽,所以不会丢失数据。

但是,如果您将变量定义为byte但实际上一直将其强制转换为int,则最好将其设为int,因为您只会混淆自己和代码的其他读者。

如果需要它成为int,请使用int

数据类型很重要,但代码可读性的问题也很重要 - 必须到处强制转换会降低可读性。

答案是肯定的

当你需要使用不是很大的整数值时,你应该避免使用/强制转换为任何其他类型,但int除非你有需要。就像您发送此数据的带宽有限一样。

数据类型是良好编码的基础 - 它允许编译器为您进行大量检查,因此有助于消除/突出显示错误。

在您的示例中,您可以使用 ushort 来存储您的数字,但除非您正在编写一个对内存非常敏感的应用程序,否则您最好使用 int,因为许多库调用无论如何都需要将参数转换回整数。 (由于常量类型转换,这将使您的代码可读性降低 - 并且可能效率较低(

随着我们计算机上当前可用的内存量,当需要在字节或整数之间进行选择时,内存不再是问题。

我想补充一点,int 更容易处理。

数据类型

的设计不应取决于控件显示(或保存到数据存储(的方式。如果我看到 byte 类型的属性,那么它会告诉我我的数据类型需要什么值范围。例如 Color类具有R,G,B类型为 byte 的自描述性属性。

也不要过早进行优化 - 如果它成为性能问题(我怀疑从字节转换为 int 会对系统性能产生重大影响(,那么您可以稍后优化问题代码。

顺便说一句,从字节到 int 的转换是隐式的,因此您无需手动执行此操作:

comboBox.SelectedIndex = myObj.ByteProperty;

谢谢你们的回答。我无法接受一个答案,因为它们相辅相成,所以我决定将它们分组。

  1. CPU 旨在高效处理 32 位值(链接问题(。
  2. 无需过早进行优化。
  3. 始终强制转换数据类型效率不高。
  4. 声明某种类型的变量并始终强制转换它会降低代码的可读性。