Поменяйте местами две переменные без использования временной переменной - PullRequest
58 голосов
/ 30 апреля 2009

Я бы хотел иметь возможность поменять две переменные без использования временной переменной в C #. Можно ли это сделать?

decimal startAngle = Convert.ToDecimal(159.9);
decimal stopAngle = Convert.ToDecimal(355.87);

// Swap each:
//   startAngle becomes: 355.87
//   stopAngle becomes: 159.9

Ответы [ 28 ]

1 голос
/ 04 мая 2018

с кортежами

decimal startAngle = Convert.ToDecimal(159.9);
decimal stopAngle = Convert.ToDecimal(355.87);

(startAngle, stopAngle) = (stopAngle, startAngle);
1 голос
/ 30 августа 2017

Если вы хотите поменять 2 строковые переменные:

a = (a+b).Substring((b=a).Length);

Вспомогательный метод соответственно:

public static class Foo {
    public static void SwapString (ref string a, ref string b) {
       a = (a+b).Substring((b=a).Length);
    }
}

Использование будет тогда:

string a="Test 1";
string b="Test 2";
Foo.SwapString(a, b);
1 голос
/ 14 февраля 2015
startAngle = (startAngle + stopAngle) - (stopAngle = startAngle);
0 голосов
/ 30 марта 2013
var a = 15;
var b = -214;
a = b | !(b = a);

Это прекрасно работает.

0 голосов
/ 11 августа 2017

Вот другой процесс обмена двух переменных

//process one
a=b+a;
b=a-b;
a=a-b;
printf("a= %d  b=  %d",a,b);

//process two
a=5;
b=10;
a=a+b-(b=a);
printf("\na= %d  b=  %d",a,b);

//process three
a=5;
b=10;
a=a^b;
b=a^b;
a=b^a;
printf("\na= %d  b=  %d",a,b);

//process four
a=5;
b=10;
a=b-~a-1;
b=a+~b+1;
a=a+~b+1;
printf("\na= %d  b=  %d",a,b);
0 голосов
/ 24 марта 2017

Вот еще один подход в одной строке:

decimal a = 159.9m;
decimal b = 355.87m;

a = b + (b = a) - b;
0 голосов
/ 23 июня 2016

Вы можете попробовать следующий код. Это намного лучше, чем другой код.

a = a + b;
b = a - b;
a = a - b;
0 голосов
/ 09 августа 2015

Очень простой код для замены двух переменных:

static void Main(string[] args)
{
    Console.WriteLine("Prof.Owais ahmed");
    Console.WriteLine("Swapping two variables");

    Console.WriteLine("Enter your first number ");
    int x = Convert.ToInt32(Console.ReadLine());

    Console.WriteLine("Enter your first number ");
    int y = Convert.ToInt32(Console.ReadLine());

    Console.WriteLine("your vlaue of x is="+x+"\nyour value of y is="+y);

    int z = x;
    x = y;
    y = z;

    Console.WriteLine("after Swapping value of x is="+x+"/nyour value of y is="+y);
    Console.ReadLine();
}
...