9

可能重复:
使用 C# 的最佳字符串连接方法是什么?

我有一个变量:

string variable1;

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

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

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

4

7 回答 7

14

只需使用+运算符:

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

您还需要初始化variable1

string variable1 = string.Empty;

或者

string variable1 = null;

但是考虑使用 aStringBuilder代替,因为它更有效:

StringBuilder builtString = new StringBuilder();

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

string variable1 = builtString.ToString();
于 2012-09-03T11:43:20.787 回答
4

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

  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 个或更多的循环,这确实对性能产生了很大影响。

于 2012-09-03T11:43:17.760 回答
3

&&条件与运算符

可以将运算符用于字符串连接,但在循环(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])));
于 2012-09-03T11:46:08.743 回答
2
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();
于 2012-09-03T11:43:10.663 回答
2
variable1 += IntToHex(buffer[i]);
于 2012-09-03T11:43:48.110 回答
1

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

于 2012-09-03T11:44:42.627 回答
1

您需要+在 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]));
}
于 2012-09-03T11:45:05.123 回答