【问题标题】:How do I swap two strings without using a temporary variable? [closed]如何在不使用临时变量的情况下交换两个字符串? [关闭]
【发布时间】:2016-01-15 19:22:01
【问题描述】:

如何在不使用 C# 中的临时变量的情况下交换两个字符串?

string str1 = "First";
string str2 = "Second";
str1 = string.Concat(str1, str2);
str2 = str1.Replace(str2, "");
str1 = str1.Replace(str2, "");

【问题讨论】:

  • 您的解决方案有什么问题?你的问题到底是什么?
  • 你到底想要什么?你的问题不清楚!
  • 如果您尝试进行编码挑战,那是一回事,但是,我怀疑您这样做是出于节省内存和/或 CPU 的错误尝试,但是,我保证你认为使用临时变量将是最好的解决方案 - 字符串是不可变的,你只是存储一个引用。实际上,您最终会使用您提出的解决方案和一些答案分配几个字符串。
  • 摇摆不太可能对未来的读者有用的条款以进行近距离投票

标签: c#


【解决方案1】:

我永远不会执行以下解决方案,也不希望我的同事在不使用临时变量的情况下进行这种交换。这是最简单、清晰且速度更快的解决方案。

解决方案:

string str1 = "First";
string str2 = "Second";
str1 += str2;
str2 = str1.Remove(str1.IndexOf(str2));
str1 = str1.Substring(str2.Length);

【讨论】:

  • “香蕉”“ana”失败
【解决方案2】:

在不使用临时变量的情况下交换两个字符串变量:

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

【讨论】:

    【解决方案3】:

    我认为在 C# 中没有办法做到这一点。在 Python 中,您可以同时设置两个变量,但在 C# 中没有办法。您可以创建一种方法来更透明地执行此操作。示例:

    public static void ChangeValues(ref string str1, ref string str2)
    {
        var temp = str2;
        str1 = str2;
        str2 = temp;
    }
    

    然后打电话

    string str1 = "First";
    string str2 = "Second";
    ChangeValues(ref str1, ref str2);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-02-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-04-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多