选择正确的数据类型与投射

时间:2012-05-23 08:38:57

标签: c#

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

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

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

感谢您的时间。

7 个答案:

答案 0 :(得分:2)

byte投射到int是安全的,因为intbyte宽,所以不会丢失任何数据。

但是,如果您将变量定义为byte但实际上一直将其转换为int,那么最好将其变为int,因为您只会让自己感到困惑以及你代码的其他读者。

答案 1 :(得分:2)

如果您需要int,请使用int

数据类型很重要,但代码可读性问题也是如此 - 必须在整个地方进行转换会降低可读性。

答案 2 :(得分:0)

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

同样不做premature optimizations - 如果它成为性能问题(我怀疑从byte到int的转换会对系统性能产生很大影响),那么你可以稍后优化问题代码。

从字节到int的BTW转换是隐式的,因此您不需要手动执行:

comboBox.SelectedIndex = myObj.ByteProperty;

答案 3 :(得分:0)

答案是

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

答案 4 :(得分:0)

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

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

答案 5 :(得分:0)

根据我们计算机上当前可用的内存量,当需要在byte或int之间进行选择时,内存不再是问题。

我想补充说int更容易处理。

答案 6 :(得分:0)

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

  1. CPU旨在高效地使用32位值(linked question)。
  2. 无需执行premature optimization
  3. 始终转换数据类型效率不高。
  4. 声明某种类型的变量并始终强制转换会降低代码的可读性。