C# 铸造多余与否
这是我的原始函数C# 铸造多余与否,c#,casting,C#,Casting,这是我的原始函数 private static Int32 getInt(byte[] Data, char Endianness) { if (Data.Length > 3) { switch (Endianness) { case 'l': return ((Int32
private static Int32 getInt(byte[] Data, char Endianness)
{
if (Data.Length > 3)
{
switch (Endianness)
{
case 'l':
return ((Int32)(Data[3]) << 24) + ((Int32)(Data[2]) << 16) + ((Int32)(Data[1]) << 8) + (Int32)(Data[0]);
case 'b':
return ((Int32)(Data[0]) << 24) + ((Int32)(Data[1]) << 16) + ((Int32)(Data[2]) << 8) + (Int32)(Data[3]);
default:
throw new ArgumentException("Wrong endianness type", "Endianness types are 'l' or 'b'");
}
}
else
{
throw new ArgumentException("NVM data corruption", "Failed to parse NVM data");
}
}
private static Int32 getInt(byte[]数据,char Endianness)
{
如果(Data.Length>3)
{
开关(端度)
{
案例“l”:
return((Int32)(Data[3])强制转换是冗余的,因为当您使用左移位运算符时,编译器会自动将数据[2]
升级为整数,并且该操作的结果也将是整数。因此不会丢失任何数据。强制转换是冗余的,因为编译器会自动升级数据[2]
当您使用左移
运算符时,将其转换为整数,并且该操作的结果也将是整数。因此不会丢失任何数据。如果您查看@sLw,我看不到您所描述的内容。将鼠标悬停在@sLw上,我是,但我看不到,我使用的是VS2013更新5,也许这就是原因?@sLw我认为此功能出现在VS2015中如果您查看@sLw我看不到您所描述的内容将鼠标悬停在@sLw上我是,但我看不到,我使用的是VS2013更新5,也许这就是原因?@sLw我认为此功能出现在VS2015中
private static int getInt(byte[] Data, char Endianness)
{
if (Data.Length > 3)
{
switch (Endianness)
{
case 'l':
return (Data[3] << 24) + (Data[2] << 16) + (Data[1] << 8) + Data[0];
case 'b':
return (Data[0] << 24) + (Data[1] << 16) + (Data[2] << 8) + Data[3];
default:
throw new ArgumentException("Wrong endianness type", "Endianness types are 'l' or 'b'");
}
}
throw new ArgumentException("NVM data corruption", "Failed to parse NVM data");
}