2008-12-01 61 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(); 
相關問題