2011-08-03 59 views
-3

我在Start()中收到「無過載需要0個參數」的錯誤。在我的主要方法線。我不知道如何解決這個問題,並且我四處搜尋,找不到任何東西。沒有超載需要'0'參數[c#]

using System; 
    using System.Collections.Generic; 
    using System.Linq; 
    using System.Text; 

    namespace ConsoleApplication1 
    { 
     class Program 
     { 
      public static void main(string[] args) 
      { 
       Start(); 
      } 

      public static string Start(string move) 
      { 



       Console.Write(""); 
       string gameType = Console.ReadLine(); 

       if (gameType == "s") 
       { 

        Console.Write(""); 
       begin: 
        Console.Write("\nEnter your move: "); 
        move = Console.ReadLine(); 


        switch (move) 
        { 
         case "r": 
          Console.Write("s"); 
          Console.ReadLine(); 

          break; 
         case "s": 
          Console.Write(""); 
          Console.ReadLine(); 

          break; 
         case "f": 
          Console.Write(""); 
          Console.ReadLine(); 

          break; 
         default: 
          Console.Write("\nInvalid move, try again\n\n"); 


    goto begin; 
       } 
       Console.ReadLine(); 
       return move; 
      } 
      else 
      { 
       return move; 
      } 
     } 


     static string Genius(string genius, string move) 
     { 
      Console.Write(move); 
      return genius; 
     } 


    } 
} 
+1

替換爲您轉到在[迅猛龍吃掉你]之前的一段時間循環(http://xkcd.com/292/)。 –

+0

好的,我會這樣做的。 –

+2

一般來說,你的第一個程序應該是沿着Hello World的行... – Coeffect

回答

8

方法調用開始應該要

Start("Something"); 

編輯:正如其他人指出:有在遞東西開始)沒有點(。傳入的移動值將被忽略,並由從控制檯讀取的內容替換。因此,我建議乾脆從Start()方法的簽名去掉參數,所以它只是讀取

public static string Start() 
+1

除了傳入的內容將被替換'move = Console.ReadLine();'所以你也可以調用'Start(null) '。 –

+0

他沒有注意到。實際上,對原始問題的回答可能是「刪除Start()方法的參數」:D –

2

既然你正在閱讀從控制檯的舉動,從開始的參數定義中移除string move和中移動作爲一個局部變量,它應該是罰款:

public static string Start() 
     { string move; 
      ... 

而且順便說一句,你主要應該是主要 - 在C#中主要應該有一個大寫M!

我建議你閱讀一些C#的基礎知識。

1

提示:這是你的方法調用:

Start(); 

,這是該方法的簽名:

public static string Start(string move) 

他們之間的不匹配......

+0

我試圖在主函數之後運行我的Start方法,會這樣做嗎? –

+0

不是。您聲明瞭一個必須傳遞給方法的參數''move''。安德斯已經給你確切的答案。 –

0

你開始(ARG )應該是這樣的:

private static string Start() 
{ 
    string move = null; 
    ... 
} 
0

啓動方法需要一個字符串作爲參數:

示例:
開始(「r」);
開始(「s」);
開始(「f」);

+0

現在它說錯誤 Program'C:\ Users \ Zack \ AppData \ Local \ Temporary Projects \ ConsoleApplication1 \ obj \ x86 \ Debug \ ConsoleApplication1。exe'不包含適用於入口點的靜態'Main'方法\t ConsoleApplication1 –

+0

這是因爲'Main'應該大寫,而'main'方法不是。 –

0

您應該通過當start()被調用(如安德斯建議)的參數,或者你應該刪除從開始(參數),並宣佈它作爲一個局部變量來代替:

public static string Start() 
    { 
     string move = string.Empty; 
相關問題