Vb.net Can';t使用带.NET字节的负数
我知道这是一个奇怪的问题,但更奇怪的是.NET关于字节数据类型的行为 这在VB.NET中是很有可能的:Vb.net Can';t使用带.NET字节的负数,vb.net,byte,add,subtraction,Vb.net,Byte,Add,Subtraction,我知道这是一个奇怪的问题,但更奇怪的是.NET关于字节数据类型的行为 这在VB.NET中是很有可能的: For b As Byte = 14 To 88 Step +10 Console.WriteLine("Byte=" + b.ToString) Next 但这不是: For b As Byte = 88 To 14 Step -10 Console.WriteLine("Byte=" + b.ToString) Next
For b As Byte = 14 To 88 Step +10
Console.WriteLine("Byte=" + b.ToString)
Next
但这不是:
For b As Byte = 88 To 14 Step -10
Console.WriteLine("Byte=" + b.ToString)
Next
如果第一个例子不可能,我会理解的
此外,就我查找而言,不可能增加或减少这样的字节值:
Dim b As Byte = 56
b += 1 'not possible
b -= 1 'not possible
For b As SByte = 88 To 14 Step -10
Console.WriteLine("Byte=" + b.ToString)
Next
那么,这是唯一一种加/减字节值的方法吗
b = CByte(b + 5)
b = CByte(b - 5)
我这样问是因为性能对我的项目至关重要,我正在编写一个国际象棋引擎,我必须时刻考虑内存使用情况,所以最好以字节为单位存储棋盘信息
但我担心偶尔会使用CByte() 这里需要了解的重要一点是代码:
For b As Byte = 14 To 88 Step 10
Console.WriteLine("Byte=" + b.ToString)
Next
…实际上与以下内容相同:
Dim b As Byte = 14
Ret:
Console.WriteLine("Byte=" + b.ToString)
b = b + 10
If b <= 88 then
Goto Ret:
End If
…很好用
注意使用的是
SByte
(“有符号字节”)。Uhm,除非有基准测试,不要担心。你也可以使用整数。国际象棋引擎有基准测试。如果你问这类问题,你甚至离找到重要问题还有很长的路要走。。不管怎样,“没关系,需要的时候就用”。或者,只需使用一个并结束一天(它只是避免了强制转换,因为b+5
和b-5
将表达式扩展为整数)。好的,玩得开心!我已经解释了为什么CByte不重要(从整数转换时),它有什么作用,为什么需要它,以及当它位于密集阵列中时,如何仅在边界处使用它来节省空间。(一旦字节值没有存储在数组或其他密集模式中,对象管理的其他开销就会使保存的3个字节基本上不相关。)您希望值-10
如何存储在字节中?为什么这么不愿意使用CByte?你对这个问题做过研究吗?看了那张照片?做了一些分析?为什么有时32位整数比16/8位整数更可取?