【问题标题】:Displaying the array contents by using ternary operators in C#在 C# 中使用三元运算符显示数组内容
【发布时间】:2019-03-27 15:54:54
【问题描述】:

请您解释一下这段代码吗?

arr[i] + (i < arr.Length - 1 ? ", " : "")
  • 为什么是“负 1”。即使我将 +1 或什至 +5 -whatever - 结果是一样的。如何读取这个片段“-1”?

【问题讨论】:

  • 这没关系,因为你的for 循环的条件。 -1,因为如果数组长度是5,那么它的最后一个元素将是i=4,因为c#中的索引从0开始,在这种情况下没关系,如果你使用它会很有用例如从数组中获取元素。
  • 您能否在该行上方显示更多代码 - 即 arr 是什么数据类型?什么数组?是字符串吗?
  • int[] arr = new int[] { 1, 2, 3, 4, 5, 6 };参数方法(arr); } public static void ParamsMethod(params int[] MyArr) { for(int i = 0; i
  • @mczaplicki 正如我之前所说,它表示您的阵列结束,请在下面查看我的答案。
  • 既然您的问题已经得到解答,请测试您的理解。编写一个类似的程序,获取一组元素,比如 10、20、30 和 40,然后使用一个或多个条件运算符将它们写出来:10, 20, 30 and 40。请记住测试您的程序以确保它适用于零元素、一元素、二元素数组等。

标签: c# arrays ternary-operator


【解决方案1】:

arr[i] + (i &lt; arr.Length - 1 ? ", " : "")

这段代码如下所示:

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

为什么是-1?好吧,实际上它是 arr.Length - 1,它指向数组的最后一个元素,因此条件 (i &lt; 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);

【讨论】:

  • 现在我看到逗号在末尾。谢谢。
【解决方案2】:

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

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

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

【讨论】:

  • "它不打印逗号和数组。" ->“它不打印逗号。” ?
【解决方案3】:

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

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

【讨论】:

  • 长度从零开始:一个空数组。
  • 是的,但是对于具有单个元素的数组,它的长度为 1,而该元素的索引为零。
猜你喜欢
  • 1970-01-01
  • 2016-06-12
  • 2015-07-31
  • 2020-11-23
  • 2023-03-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多