2008-12-01 63 views
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的功能问题。 我不知道为什么我花了这么长时间才能使用它。

+0

请添加更多的澄清像如何调用方法,是静态方法还是实例方法等。 否则,此问题将留给解释使用。 一切顺利。 – 2008-12-01 06:19:27

+1

好吧,我从你的家庭作业中学到了一些东西...... – discorax 2008-12-01 06:26:03

回答

4

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

GradeBook myGradeBook = new GradeBook(); 

然后调用刚才创建的方法。

myGradeBook.[method you want called] 
+0

为什么这有一个投票? – 2008-12-01 06:25:48

+0

我的错,我误解了一些东西,当我累得很累的时候,它正在堆叠上。然而,我现在可以撤销我的downvote ;-( – JoshBerke 2008-12-01 13:12:42

36

您正试图调用该类的实例方法。要在类上调用实例方法,您必须创建一个实例来调用该方法。如果您想在非实例上调用该方法,请添加静态关键字。例如

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()); 
} 
12

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

MyClass myClass = new MyClass(); 

一旦你加入这行你就可以同时拨打你的方法

myClass.myMethod(); 

,都是你的类在同一个名字?当我第一次学习c#时,这对我来说是一个常见的跳闸点。

2

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

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

再比如说3,你需要你的对象的实例调用方法:

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