将代码从 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;
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)。
您可以使用 i
和 j
等变量循环访问引用索引的数组。
只是像 [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# 提供了你可能想要实现的其他功能。其中之一是真正的多维数组的存在。它们在单个对象中实现矩阵的多个维度,而[][]
表示法实际上是一个交错数组,即数组数组。