在 C# 中使用三元运算符显示数组内容

Displaying the array contents by using ternary operators in C#

你能解释一下这个片段代码吗?

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

因为arr.Length与数组的总长度有关,从1开始,而数组本身是从0开始的。因此,要获取数组中的最后一个元素,正确的代码是长度 - 1.

代码本身在除最后一个元素之外的任何元素之后添加一个逗号,并在最后一个元素添加一个空字符串。

三元运算符的计算结果如下 condition ? result if condition is true : result if condition is false

因此在您的示例中 arr[i] + (i < arr.Length - 1 ? ", " : "") 打印数组的一个元素,后跟一个逗号和一个 space 直到数组中的最后一个元素,它不打印逗号。

数组的最后一个元素位于索引 array.Length - 1

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

这段代码是这样写的:

Add ,(comma) after each element of array until it is last element, in that case - add nothing.

为什么 -1?好吧,实际上它是 arr.Length - 1 并且它指向数组的最后一个元素,因此条件 (i < arr.Length - 1) 检查您当前是否在数组的最后一个元素中。

如果你的数组长度为 5:

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

您的 arr.Length5,但最后一个元素是索引为 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);