Отображение содержимого массива с использованием троичных операторов в C # - PullRequest
0 голосов
/ 23 октября 2018

, пожалуйста, не могли бы вы объяснить мне этот фрагмент кода?

arr[i] + (i < arr.Length - 1 ? ", " : "")
  • почему это "минус 1".Даже если я поставлю +1 или даже +5 - что угодно - результат тот же.Как прочитать этот фрагмент '-1'?

Ответы [ 3 ]

0 голосов
/ 23 октября 2018

Тернарный оператор оценивается примерно так: condition ? result if condition is true : result if condition is false

Итак, в вашем примере arr[i] + (i < arr.Length - 1 ? ", " : "") печатает элемент массива, за которым следуют запятая и пробел до последнего элемента в массиве, длякоторый не печатает запятую.

Последний элемент массива находится по индексу array.Length - 1

0 голосов
/ 23 октября 2018

arr[i] + (i < arr.Length - 1 ? ", " : "")

Этот код выглядит следующим образом:

Добавляйте , (запятую) после каждого элемента массива до последнего элемента, в этом случае - добавьтеничего.

Почему -1?Ну, на самом деле это arr.Length - 1 и он указывает на последний элемент массива, так что условие (i < arr.Length - 1) проверяет, находитесь ли вы в последнем элементе вашего массива.

Если у вас есть массив длины 5:

int[] arr = new [] {1,2,3,4,5};

ваш arr.Length равен 5, но последний элемент - это элемент с индексом 4:

arr[0] = 1
arr[1] = 2
arr[2] = 3
arr[3] = 4
arr[4] = 5

, поэтому arr.Length - 1 будет указывать на ваш последний5:

arr[4] == arr[arr.Length - 1] //(arr.Length - 1 = 5 - 1 = 4)

Я предполагаю, что ваш код выглядит примерно так:

string joinedArray = string.Empty;
for(int i = 0; i < arr.Length; i++)
{
    joinedArray += arr[i] + (i < arr.Length - 1 ? ", " : "");
}

Если вы введете +1 или +5, вы заметите,что ваш результат (если вы храните это выражение где-нибудь или печатаете) будет содержать , (запятую) в конце вашего результата.

И еще кое-что, для этой ситуации есть метод string.Joinи это даст вам тот же результат:

string.Join(", ", arr);
0 голосов
/ 23 октября 2018

Поскольку arr.Length относится к общей длине массива и начинается с 1, тогда как сам массив начинается с нуля.Таким образом, чтобы получить последний элемент в массиве, правильный код длины - 1.

Сам код добавляет запятую после любого элемента, кроме последнего, а в последнем элементе вместо него добавляется пустая строка.

...