如何在c#中反转逻辑锯齿数组的值

本文关键字:数组 | 更新日期: 2023-09-27 18:03:18

下午好,我有一个c#锯齿数组与真和假的值(或0和1),我想颠倒的值,如:

1 1 1 1
0 1 1 0
1 1 1 1
1 0 0 1
成为

:

0 0 0 0
1 0 0 1
0 0 0 0
0 1 1 0

是否有一种简单的方法使它不循环?我的jaggedarray ??

如何在c#中反转逻辑锯齿数组的值

没有这样的内置操作来反转数组,但是您可以使用LINQ来执行反转,而不需要显式循环:

var res = myJaggedArray.Select(a => a.Select(n => 1-n).ToArray()).ToArray();

1-n技巧是一种常用的将0替换为1,将1替换为0而不使用条件执行的方法。

没有内置函数,但您可以使用LINQ。

int[][] input = new[]
{
  new[] { 1, 1, 1, 1 },
  new[] { 0, 1, 1, 0 },
  new[] { 1, 1, 1, 1 },
  new[] { 1, 0, 0, 1 }
};
int[][] output = input.Select(row => row.Select(value => value == 1 ? 0 : 1).ToArray()).ToArray();

逻辑值:

bool[][] input = new[]
{
  new[] { true,  true,  true,  true },
  new[] { false, true,  true,  false },
  new[] { true,  true,  true,  true },
  new[] { true,  false, false, true }
};
bool[][] output = input.Select(row => row.Select(value => !value).ToArray()).ToArray();