为什么我不能在另一个类中调用公共方法?
我有这两个类交互,我试图从第一类调用四个不同的类用于第二类。
这些方法是公共的,它们确实返回值,但由于某种原因,没有建立连接。 我尝试时得到的错误是: "An object reference is required for the nonstatic field, method, or property 'GradeBook.[method I want called]'"
我已将所有内容初始化。 我不想将方法创建为静态。 我再次阅读了我的任务的细节,我甚至不应该这样,但我似乎无法让这个工作无论如何我说出来。
myGradeBook。[方法] GraceBook。[方法]
这似乎都会造成错误。
目前的错误:
The best overloaded method match or 'System.Console.WriteLine(string, object)' has some invalid arguments. Arugment '2': cannot convert from 'method group' to 'object'
我甚至不是那些意味着什么……
编辑:我刚刚解决了这个问题,这要归功于Visual Studio的Step Intofunction。 我不知道为什么花了这么长时间才使用它。
您正在尝试在类上调用实例方法。 要在类上调用实例方法,必须创建一个用于调用该方法的实例。 如果要在非实例上调用该方法,请添加static关键字。 例如
class Example { public static string NonInstanceMethod() { return "static"; } public string InstanceMethod() { return "non-static"; } } static void SomeMethod() { Console.WriteLine(Example.NonInstanceMethod()); Console.WriteLine(Example.InstanceMethod()); // Does not compile Example v1 = new Example(); Console.WriteLine(v1.InstanceMethod()); }
听起来你没有实例化你的课程。 这是我得到“需要对象引用”错误的主要原因。
MyClass myClass = new MyClass();
一旦你添加了那一行,你就可以调用你的方法
myClass.myMethod();
此外,您的所有类都在同一名称空间中吗? 当我第一次学习c#时,这对我来说是一个常见的绊脚石。
您必须创建类的类型的变量,并将其设置为首先等于对象的新实例。
GradeBook myGradeBook = new GradeBook();
然后在刚创建的对象上调用方法。
myGradeBook.[method you want called]
例如1和2,您需要创建静态方法:
public static string InstanceMethod() {return "Hello World";}
然后例如3,您需要一个对象实例来调用该方法:
object o = new object(); string s = o.InstanceMethod();