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

时间:2008-12-01 06:12:10

标签: c# methods call

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

这些方法是公开的,它们会返回值,但由于某种原因,没有建立连接。 我尝试的错误是:"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 个答案:

答案 0 :(得分: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());
}

答案 1 :(得分:12)

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

MyClass myClass = new MyClass();

一旦你添加了这一行,你就可以调用你的方法

myClass.myMethod();

此外,您的所有类都在同一名称空间中吗?当我第一次学习c#时,这对我来说是一个常见的跳跃点。

答案 2 :(得分:4)

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

GradeBook myGradeBook = new GradeBook();

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

myGradeBook.[method you want called]

答案 3 :(得分:2)

对于示例1和2,您需要创建静态方法:

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

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

object o = new object();
string s = o.InstanceMethod();
相关问题