11

我已经让这两个类进行交互,并且我试图从第一类中调用四个不同的类以在第二类中使用。

这些方法是公共的,它们确实返回值,但由于某种原因没有建立连接。我尝试时得到的错误是:"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 Into 功能,我刚刚解决了这个问题。我不知道为什么我花了这么长时间才使用它。

4

4 回答 4

39

您正在尝试调用该类的实例方法。要调用类的实例方法,您必须创建一个实例来调用该方法。如果要在非实例上调用该方法,请添加 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());
}
于 2008-12-01T06:16:31.183 回答
12

听起来你没有实例化你的类。这是我收到“需要对象引用”错误的主要原因。

MyClass myClass = new MyClass();

添加该行后,您就可以调用您的方法

myClass.myMethod();

另外,您的所有类都在同一个命名空间中吗?当我第一次学习 c# 时,这对我来说是一个常见的绊脚石。

于 2008-12-01T06:16:51.900 回答
4

您必须创建一个类类型的变量,并首先将其设置为等于对象的新实例。

GradeBook myGradeBook = new GradeBook();

然后在您刚刚创建的对象上调用该方法。

myGradeBook.[method you want called]
于 2008-12-01T06:16:03.383 回答
2

例如 1 和 2 你需要创建静态方法:

public static string InstanceMethod() {return "Hello World";}

然后例如 3,您需要一个对象实例来调用该方法:

object o = new object();
string s = o.InstanceMethod();
于 2008-12-01T08:22:01.477 回答