如何在数组c#中使用布尔运算符?
如何在数组c#中使用布尔运算符。 我有三个相同大小的3D数组,我想对两个数组应用布尔运算符,并将结果保留在array3中。 例如:如何在数组c#中使用布尔运算符?,c#,.net,arrays,boolean,C#,.net,Arrays,Boolean,如何在数组c#中使用布尔运算符。 我有三个相同大小的3D数组,我想对两个数组应用布尔运算符,并将结果保留在array3中。 例如: int[, ,] array1 = new int[,,] { { { 1, 2, 3 }, { 4, 5, 6 } }, { { 7, 8, 9 }, { 10, 11, 12 } } }; int[, ,] array2 = new int[,,] { { { 1, 1, 1 }, { 0, 0, 0
int[, ,] array1 = new int[,,] { { { 1, 2, 3 }, { 4, 5, 6 } },
{ { 7, 8, 9 }, { 10, 11, 12 } } };
int[, ,] array2 = new int[,,] { { { 1, 1, 1 }, { 0, 0, 0 } },
{ { 0, 0, 0 }, { 0, 0, 0 } } };
int [, ,] array3 = new int[4,3];
result = array1 (AND operator) array2;
预期结果:
array3 = { { 1, 2, 3 }, { 0, 0, 0 } },{ { 0, 0, 0 }, { 0, 0, 0 } };
我的问题是,有没有办法在两个数组上实现布尔运算而不访问数组元素
谢谢你提前通知。我不太清楚你的意思,但是:
int[,,] array3 = new int[array1.GetLength(0), array1.GetLength(1), array1.GetLength(2)];
for (int x = 0; x < array1.GetLength(0); ++x)
for (int y = 0; y < array1.GetLength(1); ++y)
for (int z = 0; z < array1.GetLength(2); ++z)
array3[x, y, z] = (array2[x, y, z] != 0) ? array1[x, y, z] : 0;
int[,]array3=新的int[array1.GetLength(0)、array1.GetLength(1)、array1.GetLength(2)];
对于(int x=0;x
如果array2[x,y,z]不是零,则将array3[x,y,z]设置为array1[x,y,z],否则将array3[x,y,z]设置为0
这就是你的意思吗?我不太清楚你的意思,但是:
int[,,] array3 = new int[array1.GetLength(0), array1.GetLength(1), array1.GetLength(2)];
for (int x = 0; x < array1.GetLength(0); ++x)
for (int y = 0; y < array1.GetLength(1); ++y)
for (int z = 0; z < array1.GetLength(2); ++z)
array3[x, y, z] = (array2[x, y, z] != 0) ? array1[x, y, z] : 0;
int[,]array3=新的int[array1.GetLength(0)、array1.GetLength(1)、array1.GetLength(2)];
对于(int x=0;x
如果array2[x,y,z]不是零,则将array3[x,y,z]设置为array1[x,y,z],否则将array3[x,y,z]设置为0
这就是你的意思吗?好消息是,从framework 4.0可以看出: Enumerable.Zip方法应用指定的 函数到两个序列的对应元素,其中 生成一系列结果 对于一维阵列,这很简单:
int[] array1 = new int[] { 1, 2, 3 };
int[] array2 = new int[] { 0, 1, 0 };
var zipped = array1.Zip(array2, (first, second) => second == 0 ? 0 : first);
//zipped = {0, 2, 0}
坏消息是多维数组没有实现IEnumerable,但是可以将Zip与锯齿数组一起使用。您可以尝试以下方法:
int[][] jagged1 = new int[][]
{
new int[] {1,2,3},
new int[] {4,5,6},
new int[] {7,8,9}
};
int[][] jagged2 = new int[][]
{
new int[] {1,1,1},
new int[] {0,0,0},
new int[] {0,0,0}
};
var zipped = jagged1.Zip(jagged2, (firstArray, secondArray)
=> firstArray.Zip(secondArray,
(first, second) => second == 0 ? 0 : first)
);
//zipped = {{1,2,3}, {0,0,0}, {0,0,0}}
好消息是,从framework 4.0可以看出: Enumerable.Zip方法应用指定的 函数到两个序列的对应元素,其中 生成一系列结果 对于一维阵列,这很简单:
int[] array1 = new int[] { 1, 2, 3 };
int[] array2 = new int[] { 0, 1, 0 };
var zipped = array1.Zip(array2, (first, second) => second == 0 ? 0 : first);
//zipped = {0, 2, 0}
坏消息是多维数组没有实现IEnumerable,但是可以将Zip与锯齿数组一起使用。您可以尝试以下方法:
int[][] jagged1 = new int[][]
{
new int[] {1,2,3},
new int[] {4,5,6},
new int[] {7,8,9}
};
int[][] jagged2 = new int[][]
{
new int[] {1,1,1},
new int[] {0,0,0},
new int[] {0,0,0}
};
var zipped = jagged1.Zip(jagged2, (firstArray, secondArray)
=> firstArray.Zip(secondArray,
(first, second) => second == 0 ? 0 : first)
);
//zipped = {{1,2,3}, {0,0,0}, {0,0,0}}
你是说你想用第二个数组屏蔽第一个数组吗?是的,屏蔽(这个问题表达得不是很好)是&&is逻辑运算符,它返回true或false,除了3&&1,你怎么返回3
不访问数组元素?
是否要在不访问数组元素的情况下比较2个数组的元素?你是在要求一个内置的库函数,还是这是一个技巧性的问题?你是说你想用第二个数组来屏蔽第一个数组?是的,屏蔽(&不是很好地表达了这个问题)是逻辑运算符,它返回true或false,除了3&&1如何返回3不访问数组元素?
是否要在不访问数组元素的情况下比较2个数组的元素?您是在要求一个内置的库函数,还是这是一个技巧性的问题?