С чего вы взяли, что Length
должны быть неизвестны? Это свойство, что любой массив просто имеет
Получает общее количество элементов во всех измерениях массива.
Конечно, это не неизвестно в тот момент, когда вы вызываете свой метод с соответствующим параметром!
return line;
даже не скомпилируется, поскольку, как вы говорите, метод имеет тип void
, поэтому может ничего не возвращать. Вероятно, это должно быть private string ConcatExample
Тогда, что означает руководство по единству (не знаю, где именно вы читаете это), лежит в
line += ", " + intArray[i].ToString();
под капотом каждые string
в c#
является неизменным char[]
. Таким образом, каждый раз, когда вы выполняете конкатенацию строк через stringC = stringA + stringB
, то, что происходит внутри, в основном напоминает
char[] stringC = new char[stringA.Length + stringB.Length];
for(var iA = 0; iA < stringA.Length; iA++)
{
stringC[i] = stringA[i];
}
for(var iB = 0; iB < stringB.Length; iB++)
{
stringC[iB + stringA.Length] = stringB[iB];
}
, поэтому при работе с циклами, особенно с большими данными, настоятельно рекомендуется использовать StringBuilder
как
private string ConcatExample(int[] intArray)
{
var builder = new StringBuilder(intArray[0]);
for(i =1; i < intArray.Length; i++)
{
builder.Append(", ").Append(intArray[i].ToString());
}
return builder.ToString();
}