2011-09-12 11 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'は' testCheck_Click'からアクセスできないForm1のコンストラクタのローカル変数です。これはJavaでも同じです。 –

答えて

9

それはtestCheck_Click

の範囲外だからそれはです
+0

ありがとう、tharを見たはずです、^^ – James

+0

@ジェームス、問題は、受け入れられた答えをマークすることを忘れないでください! – msarchet

3

PortChecks PortCheckObjectForm1コンストラクタはローカル変数です。
その宣言を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

@James、

あなたが名「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のバージョンではありません。 C#の問題(あなたのコードがJavaでは動作しないため)。 PortCheckObjectは、TestCheck_Clickのスコープではなく、Form1()のスコープにあります。以下を試してください:

public partial class Form1 : Form 
{ 
    private PortChecks PortCheckObject; 

    public Form1() 
    { 
     InitializeComponent(); 

     PortCheckObject = new PortChecks(); 

    } 

private void testCheck_Click(object sender, EventArgs e) 
    { 
     PortCheckObject.MyMethod(); 
    } 
関連する問題