如何在数组c#中使用布尔运算符?

如何在数组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

如何在数组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 } }, 
                             { { 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个数组的元素?您是在要求一个内置的库函数,还是这是一个技巧性的问题?