C# 无法在驱动程序类的主方法中调用计算器类的加法方法,尽管我包含了cal.dll
这是driver.cs中的驱动程序类C# 无法在驱动程序类的主方法中调用计算器类的加法方法,尽管我包含了cal.dll,c#,.net,C#,.net,这是driver.cs中的驱动程序类 using System; public class driver{ public static void Main(){ int meth; calculator obj = new calculator(); do { System.Console.WriteLine("1. Addition\n2.Subtraction\n3.Multiplication\n4. Division\n5. Mod\n6.
using System;
public class driver{
public static void Main(){
int meth;
calculator obj = new calculator();
do
{
System.Console.WriteLine("1. Addition\n2.Subtraction\n3.Multiplication\n4. Division\n5. Mod\n6. Square Root");
meth=int.Parse(Console.ReadLine());
if (meth==1)
{
Console.WriteLine("Enter 1st Number=");
double num1=double.Parse(Console.ReadLine());
Console.WriteLine("Enter 2st Number=");
double num2=double.Parse(Console.ReadLine());
double answer = obj.addition(num1,num2);
}
} while (meth!=0);
}}
这是cal.cs中的计算器类
using System;
public class calculator{
double addition(double x,double y){
return x+y;
}
double subtraction(double x,double y){
return x-y;
}
double multiplication(double x,double y){
return x*y;
}
double division(double x,double y){
return x/y;
}
double mod(double x,double y){
return x%y;
}
double squareRoot(double x){
return Math.Sqrt(x);
}
}
我已使用创建了cal.dll文件
CSC/目标:图书馆cal.cs
然后编译驱动程序类
CSC/reference:cal.dll driver.cs
using System;
public class driver{
public static void Main(){
int meth;
calculator obj = new calculator();
do
{
System.Console.WriteLine("1. Addition\n2.Subtraction\n3.Multiplication\n4. Division\n5. Mod\n6. Square Root");
meth=int.Parse(Console.ReadLine());
if (meth==1)
{
Console.WriteLine("Enter 1st Number=");
double num1=double.Parse(Console.ReadLine());
Console.WriteLine("Enter 2st Number=");
double num2=double.Parse(Console.ReadLine());
double answer = obj.addition(num1,num2);
}
} while (meth!=0);
}}
除了机器外,一切正常
obj.addition(num1,num2);
驾驶舱
需要帮助您需要公开您的方法,以便从其他类访问它们。显然,错误消息不是很具有描述性——当您试图从类外部调用非公共方法时,也会给出CS1061
public double Addition(double x, double y) {
return x + y;
}
我还建议您阅读。默认情况下,类型的Metohds具有内部保护级别,我刚刚将其置于每个方法之前,它工作正常 cs(19.25):错误1061:“计算器”不包含 “添加”和无扩展方法“添加”的定义 找不到类型为“calculator”的第一个参数 正如Matti Virkkunen已经指出的,这是因为方法是私有的 通常,如果方法是
private
,并且它与console应用程序位于同一个项目中,您将得到编译时错误:“由于其保护级别,方法不可访问”
因为它在另一个项目中,所以它不是不可访问的,但对于控制台应用程序是完全不可见的
附言。
您仍然可以使用反射访问您的私有方法:
static void Main(string[] args)
{
calculator calc = new calculator();
var addition = calc.GetType().GetMethod("addition", System.Reflection.BindingFlags.NonPublic
| System.Reflection.BindingFlags.Instance);
var result = addition.Invoke(calc, new object[] { 5, 10 });
Console.WriteLine(result);
}
输出:
15
你说一切正常是什么意思?这行代码有什么错误?错误是从Main方法调用cal类的加法函数,请阅读说明,这就是我写这行代码的原因。不,这不是@o_weisman的意思。编译器不会只说“有错误”,它还会给你错误的描述。您忘记阅读和/或粘贴它。driver.cs(19.25):错误1061:“calculator”不包含“addition”的定义,并且找不到接受类型为“calculator”的第一个参数的扩展方法“addition”。编译器说calculator类没有方法加法错误CS1061我很确定这不是您收到的错误消息,除非您忘记重新编译很明显,错误信息不是很具有描述性。解决方案仍然正确。driver.cs(19.25):错误1061:“calculator”不包含“addition”的定义,并且找不到接受类型为“calculator”的第一个参数的扩展方法“addition”