无法使用函数返回交换的整数

时间:2013-02-04 19:03:50

标签: c# function

我被要求“编写一个交换两个整数的函数(我不允许使用算术或布尔运算符)并返回结果” 不幸的是我遇到了一个小问题。我想我已经设法使用建议的XOR算法交换整数,但我不确定如何返回值。我在编程方面很差,但我希望我已经足够解释了这一点。

以下是目前的代码:

static void Main(string[] args)
{
    //numberSwap?(int number1, int number2)
}

public int numberSwap(int number1, int number2)
{
    number1 ^= number2;
    number2 ^= number1;//I think this is correct
    number1 ^= number2;

    int result = number1, number2;
    return result;// I think I may have this wrong
}

如上所述我认为我可能有结果赋值并返回错误以及被调用的函数。

1 个答案:

答案 0 :(得分:2)

由于您传递参数by value而没有交换数字的原因,您应该传递参数by reference


传递参数By Value:创建发送到参数的变量的副本。
传递参数By Reference修改传递的参数,不创建变量的任何副本。


你的功能逻辑是正确的,你遗漏的唯一tiny事是As Reference

public void numberSwap(ref int number1, ref int number2)
{
    number1 ^= number2;
    number2 ^= number1;
    number1 ^= number2;
}

并且对函数的调用必须如下:

static void Main(string[] args)
{
    int n1 = 5, n2 = 10;
    numberSwap(ref n1, ref n2)
}