2010-10-12 60 views
1
public partial class Form1 : Form 
    { 
     public Form1() 
     { 
      InitializeComponent(); 
     } 

     private void txtTestPrime_Click(object sender, EventArgs e) 
     { 
      TestPrime myNumber = new TestPrime(); 
      lblAnswer.Text = 
       myNumber.TestPrime(ToInt16(txtTestPrime.Text)) ? "it is prime!" : "it is NOT prime!"; 
     } 

    } 
    public class TestPrime(int number) 
    { 
     bool prime; 


    } 

它不喜歡這一行:初級C#類問題

public class TestPrime(int number) 

我收到此錯誤:無效令牌「(」類,結構或接口成員聲明

也越來越expect { and ;在該線上

也在此線上:

myNumber.TestPrime(ToInt16(txtTestPrime.Text)) ? "it is prime!" : "it is NOT prime!"; 

即時通訊錯誤4'WindowsFormsApplication1.TestPrime'沒有包含'TestPrime'的定義,也沒有找到接受'WindowsFormsApplication1.TestPrime'類型的第一個參數的擴展方法'TestPrime'(你是否缺少using指令或一個裝配參考?)

也許這是一個主要的事情,我做錯了。請幫忙!

+0

C#是不是斯卡拉。你不能在類名後加一個參數列表 - 相反,你必須在類體內編寫一個單獨的構造函數。 – 2010-10-12 21:27:05

回答

3

您正試圖創建一個類,並在同一時間同一線路的方法,只是沒有任何意義。

如果你想有一個方法來檢查的數量,請執行以下操作:

public partial class Form1 : Form 
{ 
    public Form1() 
    { 
     InitializeComponent(); 
    } 

    private void txtTestPrime_Click(object sender, EventArgs e) 
    { 
     // this instantiate a new class, which now is not needed 
     //TestPrime myNumber = new TestPrime(); 
     lblAnswer.Text = TestPrime(Int16.Parse(txtTestPrime.Text)) ? "it is prime!" : "it is NOT prime!"; 
    } 

    public bool TestPrime(short number) 
    { 
     /* your logic */ 
     /* this method expects a boolean as the return type */ 
    } 
} 

一些有用的鏈接:

+0

如果'TestPrime'是一個方法(我同意它應該是),那麼'new TestPrime()'沒有任何意義。 – 2010-10-12 21:25:54

+0

@Ben:感謝您指出。糾正。 – BrunoLM 2010-10-12 21:28:41

+0

另外,'ToInt16'可能意味着'Convert.ToInt16',但是'Int16.Parse'會更好。 – 2010-10-12 21:30:04

2

在類聲明中不能有參數。

您需要創建一個具有所需參數的構造函數。

例子:

public class TestPrime 
{ 
     private bool prime; 
     private int _number; 
     public TestPrime(int number) 
     { 
      this._number = number; 
     } 
} 
7

TestPrime應該是一個類?這聽起來更像是一個函數(也稱爲「方法」)。

嘗試改變該行

public static bool TestPrime(int number) 
+0

'ToInt16'仍然會崩潰,並且'New TestPrime'仍然會崩潰。自從您更改爲靜態方法後,他調用該方法的方式也會崩潰。提供更多信息。你提供的改變*不會解決他的問題。 – BrunoLM 2010-10-12 21:41:57

+0

這是作業。 OP的最佳學習方式是朝着正確的方向推動,而不是一下子沒有解釋地立即完成。 – 2010-10-12 21:48:19