3

我正在努力学习编写好的 C# 代码,我希望得到您的建议。

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

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

感谢您的时间。

4

7 回答 7

2

投射 from bytetoint是安全的,因为int它比 宽byte,因此不会丢失数据。

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

于 2012-05-23T08:41:43.527 回答
2

如果你需要它是一个int,使用一个int

数据类型很重要,但代码可读性问题也很重要——必须到处进行转换会降低可读性。

于 2012-05-23T08:42:00.087 回答
0

数据类型的设计不应依赖于控件显示(或保存到数据存储)的方式。如果我看到类型属性,byte那么它会告诉我我的数据类型期望的值范围。例如,类具有类型的Color自描述属性。R,G,Bbyte

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

顺便说一句,从 byte 转换为 int 是隐式的,因此您无需手动进行:

comboBox.SelectedIndex = myObj.ByteProperty;
于 2012-05-23T08:41:21.247 回答
0

答案是肯定的。

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

于 2012-05-23T08:43:13.967 回答
0

数据类型是良好编码的基础——它允许编译器为你做很多检查,因此有助于消除/突出错误。

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

于 2012-05-23T08:45:06.557 回答
0

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

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

于 2012-05-23T08:46:30.420 回答
0

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

  1. CPU 旨在高效处理 32 位值(链接问题)。
  2. 没有必要做过早的优化
  3. 总是强制转换数据类型效率不高。
  4. 声明某种类型的变量并总是强制转换它会降低代码的可读性。
于 2012-05-23T10:59:36.680 回答