为什么我不能在另一个类中调用公共方法?

我有这两个类交互,我试图从第一类调用四个不同的类用于第二类。

这些方法是公共的,它们确实返回值,但由于某种原因,没有建立连接。 我尝试时得到的错误是: "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();