类库调用报错:无法通过Matrices实例调用AdditionOfMatrix_Array方法
代码问题分析及修正方案
核心问题点
命名空间不匹配
CommonLogic类库中Matrices类的命名空间是ArrayArrayList_ListForMatrix,但Program.cs里引用的是CommonLogic命名空间,导致无法找到Matrices类。必须统一命名空间,要么把类库的命名空间改为CommonLogic,要么在Program.cs中引用ArrayArrayList_ListForMatrix。静态方法误用实例调用
AdditionOfMatrix_Array是静态方法,不需要实例化Matrices对象,直接通过Matrices.AdditionOfMatrix_Array()调用即可。未初始化变量传递
Program.cs中的m、n(矩阵行列数)、A、B(待相加的矩阵)均未初始化就传入方法,会引发编译或运行时错误。方法调用逻辑错误
AdditionOfMatrix_Array方法已经将计算结果写入传入的Z矩阵(即Program中的Add),无需再将返回值赋值给Add[i,j];且方法返回的Z[i,j]是循环结束后的越界索引值,无实际意义。语法缺失
Program.cs中namespace UseArrayArrayList_ListForMatrix后缺少大括号包裹类,Main方法中的break无对应循环/switch结构,代码存在未闭合的大括号。方法返回值设计不合理
矩阵相加的结果是完整矩阵,方法无需返回单个int,应改为void或直接返回结果矩阵。
修正后的代码示例
CommonLogic.cs(类库项目)
using System; // 修正命名空间为CommonLogic,匹配Program中的引用 namespace CommonLogic { public class Matrices { // 改为void返回值,因为结果已写入Z矩阵 public static void AdditionOfMatrix_Array(int m, int n, int[,] X, int[,] Y, int[,] Z) { for (int i = 0; i < m; i++) { for (int j = 0; j < n; j++) { Z[i, j] = X[i, j] + Y[i, j]; } } } // 补充完整PrintMatrix_Array方法 public static void PrintMatrix_Array(int m, int n, int[,] matrix) { for (int i = 0; i < m; i++) { for (int j = 0; j < n; j++) { Console.Write(matrix[i, j] + " "); } Console.WriteLine(); } } } }
Program.cs(主项目)
using CommonLogic; using System; namespace UseArrayArrayList_ListForMatrix { class Program { public static void Main(string[] args) { // 初始化矩阵行列数 int m = 2, n = 2; // 初始化待相加的两个矩阵 int[,] A = { { 1, 2 }, { 3, 4 } }; int[,] B = { { 5, 6 }, { 7, 8 } }; int[,] Add = new int[m, n]; // 直接调用静态方法,无需实例化 Matrices.AdditionOfMatrix_Array(m, n, A, B, Add); Console.Write("\nSum Matrix :\n"); // 调用打印方法 Matrices.PrintMatrix_Array(m, n, Add); } } }
内容的提问来源于stack exchange,提问作者MPC
相关产品推荐
相关产品推荐

