繁体   English   中英

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

[英]Choosing the right data type vs casting

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

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

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

感谢您的时间。

byteint是安全的,因为intbyte宽,所以不可能丢失数据。

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

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

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

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

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

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

comboBox.SelectedIndex = myObj.ByteProperty;

答案是肯定的

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

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

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

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

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM