2

所以,基本上我在练习一些算法。我试图弄清楚为什么当我尝试设置 number[i] 的值时下面的代码会给我一个错误?我知道这可能很简单,但我不知道“为什么”它不起作用。

public int SumOfRandomNumbersWithStrings(string randomness)
{
    //Get the value of each index in the array
    string number = "";
    for (int i = 0; i < randomness.Length; i++)
    {
        number[i] = randomness[i];
    }
    //temporarily one until I finish the algorithm
    return 1;
}
4

3 回答 3

5

为什么当我尝试设置 number[i] 的值时以下代码给我一个错误

因为 C# 中的字符串是不可变的。

但是,字符数组是可变的,因此您可以这样做:

char number[] = new char[randomness.Length];
for (int i = 0; i < randomness.Length; i++)
{
     number[i] = randomness[i];
}
string numStr = new string(number);
//temporarily one until I finish the algorithm
return 1;

在 C# 中构建字符串的最常见方法是使用StringBuilder类。它允许您通过在字符串中追加、删除或替换字符来更改字符串的内容。

于 2012-10-02T16:57:19.377 回答
1

因为number是空字符串。改用连接运算符:

number = number + randomness[i];
于 2012-10-02T16:55:46.550 回答
1

好的,如果您尝试执行字符串连接,让我们将其更改为:

public int SumOfRandomNumbersWithStrings(string randomness) 
{ 
    StringBuilder sb = new StringBuilder();

    //Get the value of each index in the array 
    for (int i = 0; i < randomness.Length; i++) 
    { 
        sb.Append(randomness[i]);
    } 

    //temporarily one until I finish the algorithm 
    return 1; 
} 

但是,如果您尝试构建一个数组,number那么让我们将其更改为:

public int SumOfRandomNumbersWithStrings(string randomness) 
{ 
    //Get the value of each index in the array 
    char[] number = new char[randomness.Length]; 
    for (int i = 0; i < randomness.Length; i++) 
    { 
        number[i] = randomness[i]; 
    } 

    //temporarily one until I finish the algorithm 
    return 1; 
} 
于 2012-10-02T16:59:16.663 回答