2011-09-12 181 views
2

我想創建一個類的對象,但它似乎沒有工作,我不禁想起我從Java的角度看這個:創建在C#類對象

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

      PortChecks PortCheckObject = new PortChecks(); 

     } 

private void testCheck_Click(object sender, EventArgs e) 
     { 
      PortCheckObject.MyMethod(); 
     } 

使用PortCheckObject打電話給我的方法的MyMethod

時,我可以將錯誤(PortChecks是類名)

+3

這在Java中也不起作用。 –

+0

您的'PortCheckObject'是Form1的構造函數中的一個局部變量,您無法從'testCheck_Click'訪問該變量。即使在Java中也是如此。 –

回答

9

這是因爲它的testCheck_Click

範圍之外
+0

謝謝,應該看過thar ,, @^ – James

+0

@詹姆斯,沒問題,記得標記答案爲接受! – msarchet

3

PortChecks PortCheckObject in Form1構造函數是一個局部變量。
把它的聲明作爲Form1類中的私人字段。

public partial class Form1 : Form 
{ 
    private PortChecks PortCheckObject = new PortChecks(); 

    public Form1() 
    { 
     InitializeComponent(); 
    } 

    private void testCheck_Click(object sender, EventArgs e) 
    { 
     PortCheckObject.MyMethod(); 
    } 
} 
0

這是範圍問題的一個實例。您的testCheck_Click方法中沒有範圍。進行以下變化,它應該工作:

public partial class Form1 : Form 
{ 
    private PortChecks MyPortCheck {get; set;} 

    public Form1() 
    { 
     InitializeComponent(); 
     MyPortCheck = new PortChecks(); 
    } 

    private void testCheck_Click(object sender, EventArgs e) 
    { 
     MyPortCheck .MyMethod(); 
    } 

... 
} 
2

@詹姆斯,

您需要名爲「PortCheckObject」一類的屬性,可以是有可能在類的其他地方訪問。

public partial class Form1 : Form 
{ 
    private PortChecks PortCheckObject; 

    public Form1() 
    { 
     InitializeComponent(); 

     PortCheckObject = new PortChecks(); 
    } 

    private void testCheck_Click(object sender, EventArgs e) 
    { 
     PortCheckObject.MyMethod(); 
    } 
} 
1

這是一般範圍問題,而不是Java v.s. C#問題(因爲你的代碼無法在Java中工作)。 PortCheckObject在Form1()的作用域中,而不是testCheck_Click的作用域。請嘗試以下操作:

public partial class Form1 : Form 
{ 
    private PortChecks PortCheckObject; 

    public Form1() 
    { 
     InitializeComponent(); 

     PortCheckObject = new PortChecks(); 

    } 

private void testCheck_Click(object sender, EventArgs e) 
    { 
     PortCheckObject.MyMethod(); 
    }