【问题标题】:C# adding string to another string [duplicate]C#将字符串添加到另一个字符串[重复]
【发布时间】:2012-08-28 03:34:18
【问题描述】:

可能重复:
What's the best string concatenation method using C#?

我有一个变量:

string variable1;

我正在尝试做这样的事情:

for (int i = 0; i < 299; i += 2)
        {
            variable1 = variable1 && IntToHex(buffer[i]);
        }

IntToHex 是一个字符串函数,因此“IntToHex(buffer[i])”的结果将是字符串。但是出现了一个错误,说我不能使用 &&。有什么解决方案可以将一个字符串添加到另一个字符串?谢谢!

【问题讨论】:

标签: c#


【解决方案1】:
variable1 = variable1 + IntToHex(buffer[i]);

但是,这可能更好:

var sb = new StringBuilder();
for (int i = 0; i < 299; i += 2)
    {
        sb.Append(IntToHex(buffer[i]));
    }
variable1 = sb.ToString();

【讨论】:

    【解决方案2】:

    在 C# 中,只需使用 + 来连接字符串:

      variable1 = variable1 + IntToHex(buffer[i]);
    

    但更重要的是,这种情况需要一个StringBuilder。

        var buffer = new StringBuilder();
        for (int i = 0; i < 299; i += 2)
        {
            buffer.Append( IntToHex(buffer[i]) );
        }
    
        string variable1 = buffer.ToString();
    

    对于 100 或更多的循环,这确实会对性能产生很大影响。

    【讨论】:

      【解决方案3】:

      只需使用+ 运算符:

      variable1 = variable1 + IntToHex(buffer[i]);
      

      你还需要初始化variable1:

      string variable1 = string.Empty;
      

      string variable1 = null;
      

      但是考虑使用StringBuilder,因为它更有效:

      StringBuilder builtString = new StringBuilder();
      
      for (int i = 0; i < 299; i += 2)
      {
          builtString.Append(IntToHex(buffer[i]));
      }
      
      string variable1 = builtString.ToString();
      

      【讨论】:

        【解决方案4】:
        variable1 += IntToHex(buffer[i]);
        

        【讨论】:

          【解决方案5】:

          有多种方法可以将字符串添加到字符串中。您可以使用在大多数情况下不推荐使用的简单 + 函数。 string.concat 和 string.format 是添加字符串的首选方法。 stringBuilder 类在将大部分字符串添加在一起时也很有用

          【讨论】:

            【解决方案6】:

            你需要在c#中使用+来连接字符串

            for (int i = 0; i < 299; i += 2)
            {
               variable1 = variable1 + IntToHex(buffer[i]);
            }
            

            但是 StringBuilder 在这里会是一个不错的选择...

            StringBuilder sb = new StringBuilder("");
            
            for (int i = 0; i < 299; i += 2)
            {
               sb= sb.Append(IntToHex(buffer[i]));
            }
            

            【讨论】:

              【解决方案7】:

              &amp;&amp;conditional-AND operator

              可以使用+ 运算符进行字符串连接,但在循环(details) 中使用它不是一个好主意。

              要么使用StringBuilder

              StringBuilder builder = new StringBuilder(299 * 4); // Or whatever
              for (int i = 0; i < 299; i += 2)
              {
                  builder.Append(IntToHex(buffer[i]));
              }
              string combined = builder.ToString();
              

              或者可能使用string.Join——考虑到你的循环,在这种情况下它可能不那么实用,但在其他情况下它会很棒。你仍然可以在这里使用它,如下所示:

              string combined = string.Join("", Enumerable.Range(0, 149)
                                                     .Select(i => IntToHex(buffer[i * 2])));
              

              【讨论】:

                猜你喜欢
                • 1970-01-01
                • 2020-04-13
                • 1970-01-01
                • 2015-12-10
                • 1970-01-01
                • 2012-05-09
                • 1970-01-01
                • 2012-12-15
                • 2012-10-06
                相关资源
                最近更新 更多