Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/315.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 铸造多余与否_C#_Casting - Fatal编程技术网

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");
    }