2014-11-22 29 views
1

我正在Notepad ++和MonoDevelop中製作C#控制檯應用程序,只使用.cs文件而不是解決方案。我從CMD編譯代碼。C# - 如何使程序沒有IDE/Visual Studio?

我想在我簡單的「Hacked」程序中添加兩個類,它只是簡單地顯示大量的0和1。每次我嘗試創建一個對象引用時,我都會在編譯器中看到一個錯誤,說我需要爲非靜態字段創建一個引用。製作方法是靜態的,但我不認爲每種方法都應該是靜態的。

所以我的問題是,如何在沒有IDE的情況下創建對象引用?

編輯:我發現通過使變量靜態的解決方案。而且我知道當一個方法是靜態的時候,它可以從任何一個類沒有參考地訪問。我只是測試一個類的參考,以瞭解更多關於C#的知識。但是我將類引用變量設爲靜態,並且引用類中不是靜態的任何東西都可以正常工作。謝謝大家幫助我,儘管你的建議和解釋對我有幫助。

+2

如何編輯你所編寫的代碼,可能首先要弄清楚是什麼原因造成的錯誤幫助你的問題。您不必使用IDE編寫C# – 2014-11-22 02:36:16

+0

儘管我相信@Cyral的答案是要走的路,您的主要問題可以在[這裏]找到(http://stackoverflow.com/questions/553143/compiling-執行-AC-尖銳 - 源文件在-命令提示)。基本上,要生成'.exe',只需打開一個命令行並運行:C:\ Windows \ Microsoft.NET \ Framework \ \ csc.exe file.cs您還可以找到更多命令行參數[此處] (http://msdn.microsoft.com/en-us/library/78f4aasd(VS.80).aspx)。 – Doon 2014-11-22 02:39:25

回答

8

很高興看到有人開始這麼簡單。無論您是在VisualStudio中還是在簡單的文本編輯器中工作,對象引用都是一樣的。

這實際上是您的代碼中的錯誤,而不是您沒有使用IDE的事實。

我假設你沒有去成面向對象的編程太多了,而這些都是簡單的單級方案,以幫助您開始。

在這種情況下,您的public static Main(string[] args)方法以某種方式訪問​​所有其他方法,字段等。靜態方法可以從所有類訪問,並且不需要對象實例。無實例訪問的方法和字段必須是靜態的。

那麼,在這種情況下,是的,每個方法確實是需要是靜態的。

退房這個問題,What's a "static method"?

例如,假設您創建了一個名爲Math類,並創建一個Pow(int x, int power)(功率)的方法(這是.NET框架的一部分)。您將使此功能static,因爲您希望所有類能夠訪問它,而無需創建Math類的實例。

int square = Math.Pow(2, 2); //Static method, no instance needed 

現在說,你犯了一個名爲Book類,這個類有方法,如GetPagesLeft()。在這種情況下,它特定於「書籍」的每個實例,並且不應該是static,因爲它適用於每個實例。

Book book = new Book(); //Create instance 
int pagesLeft = book.GetPagesLeft(); //Instance method 

不要害怕使用靜態方法,它們出於某種原因。

請注意,我不是專業的開發人員,所以我使用的一些術語可能並不完全正確,但我希望它能得到重點。

+0

好點,我沒有想到這將是一個沒有單獨的一組類的程序,如果他調用main中的類寫入方法,那麼你是絕對正確的。 – 2014-11-22 02:37:42

-1
namespace ConsoleApplication1 
{ 
    class Program 
    { 
     static void Main(string[] args) 
     { 
      // instanceMethod(); // Error calling instance method without an instance. 
            // Won't even compile 


      Program prg = new Program(); 
      prg.instanceMethod(); // No Error calling instance method from instance 

      staticMethod(); // No Error calling static method without an instance 
     } 

    void instanceMethod() 
    { 

    } 

    static void staticMethod() 
    { 

    } 
} 

}

相關問題