2010-10-21 51 views
1

當我們寫一個方法,說一個簡單的人喜歡C#初學者,寫/調用一個方法

void myMethod() 
    { 
    // code here 
    // 
    } 

,我們中的Main()調用它,它本質上是這樣做的方法:

Program myProgram = new Program(); 
myProgram.myMethod(); 

很明顯,myProgram是完全隨意的(當然,考慮到編碼慣例),但是對Program的引用有什麼意義?

+0

這是聲明實例方法myMethod的類型的名稱。 – Ani 2010-10-21 04:58:57

+1

我會建議你閱讀一本好的[介紹C#書](http://stackoverflow.com/questions/46048/what-is-the-best-book-to-learn-c0)。 – 2010-10-21 05:03:41

回答

2

您正在聲明您的方法myMethod在名爲Program的類中。由於你的方法不是static方法(即它不是static void myMethod()),它需要一個Program的實例才能工作。因此,您需要創建一個新實例Program以便調用其上的myProgram.myMethod()。如果myMethod是靜態的,那麼您可以簡單地通過Program.myMethod()來調用它,或者因爲您已經在該類中開始,所以myMethod()(因爲當前類名稱隱含在靜態方法中)。

+0

我回到我的代碼;我在myMethod前添加了靜態方法,這樣程序myMethod = new Program()變得不必要(不可編譯?非法?),並且可以簡單地通過編寫myMethod() – DonG 2010-10-21 15:08:35

0

Program是類型,它在你的問題中定義了myMethod。在C#中,方法由類型定義。

您可以通過定義類型的實例或通過類型本身(如果方法是靜態的)來調用方法。由於myMethod不是靜態的,因此需要使用Program類型的實例來調用它。

1

程序是一個類,它包含方法。默認情況下,它包含的唯一方法是static void Main(...)

如果添加非靜態方法myMethod它不屬於計劃,而是實例程序(稱爲對象)的

靜態方法(如主)可以直接從類被調用:

Program program = new Program(); 
program.myMethod(); 

類被設計成組:

Program.Main(...); 

非靜態方法必須從類的對象被稱爲像功能一樣。程序不是放置這些的好地方。您應該創建其他類,並在整個代碼中使用它們。

通過使用類保持代碼一起的類,並提供一種機制來重複使用來自不同地方的相同代碼。您可以根據自己的喜好,從許多不同的類創建許多不同的「程序」實例,並在每個類上調用「myMethod」方法。

例如,你可能有一個ClassRosterStudent類,它可以在ClassScheduler類中使用這樣的:

ClassRoster roster = new ClassRoster(); 

Student studentOne = new Student(); 
studentOne.StudentId = "123456"; 

roster.EnrollStudent(studentOne); 
0

使用這樣的:

public void myMethod() 
    { 
    // code here 

    } 
的主要方法

Program myProgram = new Program(); 
myProgram.myMethod(); 
0

謝謝大家。 我回到我的代碼;我在myMethod前添加了static,這樣程序myMethod = new Program()就變得不必要了(不可編譯?非法?),並且可以簡單地通過編寫myMethod()來調用。顯然,我需要研究靜態的作用和方式它會影響方法/類!

我實際上只在我的.NET類的第3周......我們的教師雖然非常聰明,但在教師類別中留下了一些東西。這個課程的指定文本只是在我看來是如此,至少對我和我是如何學習的(編程C#,O'Reilly)這是一個非常好的社區,謝謝!