首页 > 解决方案 > 在 C# 中使用三元运算符显示数组内容

问题描述

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

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

标签: c#arraysternary-operator

解决方案


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

这段代码如下所示:

在数组的每个元素之后添加,(逗号),直到它是最后一个元素,在这种情况下 - 不添加任何内容。

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

如果你有长度数组5

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

你的arr.Lengthis 5,但最后一个元素,是带有 index 的元素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 ? ", " : "");
}

如果您输入+1or +5,您会注意到您的结果(如果您将此表达式存储在某处或打印)将,在结果末尾包含 (comma)。

更重要的是,对于这种情况,有一种string.Join方法,它会给你同样的结果:

string.Join(", ", arr);

推荐阅读