将代码从 Java 转换为 C#

本文关键字:转换 Java 代码 | 更新日期: 2023-09-27 18:36:05

我在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;

将代码从 Java 转换为 C#

matrix[i][j] 在 C# 中的意思与在 Java 中的含义完全相同。

也就是说,您的矩阵似乎是布尔值的矩阵,而不是您描述的整数矩阵!

由于您使用的是boolean矩阵,因此代码中的if (matrix[i][j])意味着该特定索引[i][j]处的boolean元素是否为真。

更简单地分解它:

考虑一个数组:

[1][2][3]
[4][5][6]
[7][8][9]

每个元素都可以使用其索引进行访问。因此,假设元素 5 具有索引[1][1] 。(请记住,索引从 0 开始,而不是 1)。

您可以使用 ij 等变量循环访问引用索引的数组。

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

多维数组在 C# 中定义,每个维度使用 。

例如

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

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

要将代码转换为 C#,您只需将 boolean 替换为 bool 即可。两种语言的其他一切都是相同的。

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