如何在不使用C#中的临时变量的情况下交换两个字符串?
string str1 = "First";
string str2 = "Second";
str1 = string.Concat(str1, str2);
str2 = str1.Replace(str2, "");
str1 = str1.Replace(str2, "");
答案 0 :(得分:3)
我绝不会做以下解决方案,也不会指望我的同事在不使用临时变量的情况下进行此类交换。这是最简单,最清晰,速度最快的解决方案。
<强>解决方案:强>
string str1 = "First";
string str2 = "Second";
str1 += str2;
str2 = str1.Remove(str1.IndexOf(str2));
str1 = str1.Substring(str2.Length);
答案 1 :(得分:0)
我认为在C#中无法做到这一点。在Python中,您可以同时设置两个变量,但在C#中没有办法。您可以创建一个更透明地执行此操作的方法。样本:
public static void ChangeValues(ref string str1, ref string str2)
{
var temp = str2;
str1 = str2;
str2 = str1;
}
然后致电
string str1 = "First";
string str2 = "Second";
ChangeValues(ref str1, ref str2);
答案 2 :(得分:0)
在不使用临时变量的情况下交换两个字符串变量:
string str1 = "aaac", str2 = "b";
Console.WriteLine(str1);
Console.WriteLine(str2);
str2 = str2 + str1;
str1 = str2.Substring(0,str2.Length - str1.Length);
str2 = str2.Substring(a.Length);
Console.WriteLine("<" + str1 + ">");
Console.WriteLine("<" + str2 + ">");