将代码从Java转换为C#

时间:2012-06-03 14:19:49

标签: java c# code-translation

我在Java中使用一种方法,但我也想在C#中使用它。它用于判断int的矩阵是否具有传递性。

static boolean isTransitive(boolean[][] matrix) {
    for (int i = 0; i < matrix.length; i++) {
        for (int j = 0; j < matrix.length; j++) {
            if (matrix[i][j]) {
                for (int k = 0; k < matrix.length; k++) {
                    if (matrix[j][k] && !matrix[i][k]) {
                        return false;
                    }
                }
            }
        }
    }
    return true;
}

我的主要问题是,我不知道C#中的矩阵[i] [j]是什么意思?

代码是否可以使用这个4x4的int数组?:

transNumbers[0, 0] = 0;
transNumbers[0, 1] = 1;
transNumbers[0, 2] = 0;
transNumbers[0, 3] = 0;
transNumbers[1, 0] = 1;
transNumbers[1, 1] = 0;
transNumbers[1, 2] = 1;
transNumbers[1, 3] = 0;
transNumbers[2, 0] = 0;
transNumbers[2, 1] = 0;
transNumbers[2, 2] = 0;
transNumbers[2, 3] = 1;
transNumbers[3, 0] = 0;
transNumbers[3, 1] = 0;
transNumbers[3, 2] = 0;
transNumbers[3, 3] = 0;

5 个答案:

答案 0 :(得分:0)

matrix [i] [j]在C#中与在Java中完全相同。

那就是说,你的矩阵似乎是一个布尔矩阵,而不是你描述的整数!

答案 1 :(得分:0)

多维数组在C#中定义为每个维度。

例如

int[,] test = new int[list1.Count, list2.Count]

http://bytes.com/topic/c-sharp/answers/531671-array-matrix-definition

答案 2 :(得分:0)

由于您使用的是boolean矩阵,因此代码中的if (matrix[i][j])表示该特定索引boolean的{​​{1}}元素是否为真。

更简单地分解:

考虑一个数组:

[i][j]

可以使用索引访问每个元素。所以,假设元素5的索引为[1][2][3] [4][5][6] [7][8][9] 。(请记住,索引从0开始,而不是1)。

您可以使用[1][1]i等变量来迭代引用索引的数组。

答案 3 :(得分:0)

而不是[] []使用它像[I,j]。其余的代码很好。

答案 4 :(得分:0)

要将您的代码翻译为C#,您只需将boolean替换为bool即可。其他所有语言都是相同的。

但是,C#提供了您可能想要实现的其他功能。其中之一是存在真正的多维数组。它们在单个对象中实现矩阵的几个维度,而[][]表示法实际上是一个锯齿状数组,即数组数组。