出于某种原因,不能将XOR运算符与两个char一起使用,有人知道为什么?

Rec*_*ion 3 c# operators

是否有一些正式标准不允许人们在C#中使用具有两个字符的^或XOR函数?

    public char[] XORinput(char[] input, char SN)
    {
        int InputSize = input.Length;
        //initialize an output array
        char[] output = new char[InputSize];

        for (int i = 0; i < InputSize; i++)
        {

            output[i] = input[i] ^ SN;

        }


        return output;

    }
Run Code Online (Sandbox Code Playgroud)

无论出于何种原因,此代码都给我这个错误,错误1400无法将类型'int'隐式转换为'char'.存在显式转换(您是否错过了演员?)

这没有任何意义.

呼叫者:

                string num = "12345";
                char SN = Convert.ToChar(num);//serial number

                string sCommand = ("Hellow");

                char[] out = new char[sCommand.ToCharArray().Length];


                out = calculator.XORinput(sCommand.ToCharArray(), SN);
Run Code Online (Sandbox Code Playgroud)

Nom*_*Sim 7

错误不在于函数,而在于它的结果.

当你做input[i] ^ SN;结果是一个int,你"不能隐式地将类型'int'转换为'char'.

你可以这样投:

(char)(input[i] ^ SN);
Run Code Online (Sandbox Code Playgroud)

  • 因为某些操作(例如算术和XOR)仅在.NET中的`int`s上定义.`char`s被隐式转换为`int`s(所以现在它是`int ^ int`),以便它们可以被异或,从而产生`int`结果. (6认同)