如何在 C# 中反转逻辑交错数组的值?
How to invert the values of a logical jagged array in c#?
下午好,我有一个包含真值和假值(或 0 和 1)的 C# 锯齿状数组,我想反转这些值,例如:
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
有没有不循环的简单方法?像 !myJaggedArray??
没有内置函数,但可以使用 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();
没有用于反转数组的内置操作,但您可以使用 LINQ 进行反转而无需显式循环:
var res = myJaggedArray.Select(a => a.Select(n => 1-n).ToArray()).ToArray();
1-n
技巧是在不使用条件执行的情况下用 1 替换 0,用 0 替换 1 的常用方法。
下午好,我有一个包含真值和假值(或 0 和 1)的 C# 锯齿状数组,我想反转这些值,例如:
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
有没有不循环的简单方法?像 !myJaggedArray??
没有内置函数,但可以使用 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();
没有用于反转数组的内置操作,但您可以使用 LINQ 进行反转而无需显式循环:
var res = myJaggedArray.Select(a => a.Select(n => 1-n).ToArray()).ToArray();
1-n
技巧是在不使用条件执行的情况下用 1 替换 0,用 0 替换 1 的常用方法。