2012-02-11 24 views
1

私は、ページの取得が完了すると、 "SecretNumber"というクラスからオブジェクトをインスタンス化するアプリケーションを持っています。その後、新しいインスタンスをインスタンス化するのではなく、インスタンス化されたオブジェクトで作業したいと考えています。はインスタンス化されたオブジェクトにアクセスできません。C#/ asp.net

以下は、コードビハインドファイルのコードです。問題は、ボタン機能内でオブジェクト参照を使用できないことです。名前が現在のコンテキストに存在しないことを伝えるエラーが表示されます。

どうすれば解決できますか?前もって感謝します!

public partial class _Default : System.Web.UI.Page 
{ 
    protected void Page_Load(object sender, EventArgs e) { 
     SecretNumber guessNr = new SecretNumber(); 
    } 

    protected void btnCheckNr_Click(object sender, EventArgs e) { 
     if (!Page.IsValid) { 
      return; 
     } 

     else { 
      var guessedNr = int.Parse(inputBox.Text); 
      var result = guessNr.MakeGuess(guessedNr); <- The name 'guessNr' does not exist in the current context 
     } 
    } 
} 

答えて

1

移動方法の範囲外の変数の宣言、それはタイプ_Defaultのプライベートフィールドとなります。

これは実際には何もないです

public partial class _Default : System.Web.UI.Page 
{ 
    private SecretNumber guessNr; 

    protected void Page_Load(object sender, EventArgs e) { 
     guessNr = new SecretNumber(); 
    } 

    protected void btnCheckNr_Click(object sender, EventArgs e) { 
     if (!Page.IsValid) { 
      return; 
     } 

     else { 
      var guessedNr = int.Parse(inputBox.Text); 
      var result = guessNr.MakeGuess(guessedNr); <- The name 'guessNr' does not exist in the current context 
     } 
    } 
} 
+0

ああ、もちろん!ありがとう! :) – holyredbeard

0
SecretNumber guessNr = new SecretNumber(); 

を働くものとします。あなたは必要があります:あなたはbtnCheckNrでそれにアクセスしたい場合は

public partial class _Default : System.Web.UI.Page 
{ 
    private SecretNumber guessNr; 

    protected void Page_Load(object sender, EventArgs e) { 
     this.guessNr = new SecretNumber(); 
    } 

    protected void btnCheckNr_Click(object sender, EventArgs e) { 
     if (!Page.IsValid) { 
      return; 
     } 

     else { 
      var guessedNr = int.Parse(inputBox.Text); 
      var result = this.guessNr.MakeGuess(guessedNr); 
      // Now use result 
     } 
    } 
} 
0

Page_LoadguessNr外を置きます。

SecretNumber guessNr; 

Page_Loadメソッドに割り当てます。

-1

私は、C#(フィールド、メソッド、イベント)のクラスに関するいくつかの基本情報を読む必要があると仮定します。 ASP.NETは、OOPに関して他の.NETテクノロジとまったく同じパラダイムに従っているため、これはASP.NETの問題ではありません。

もちろん、タイプSecretNumberのフィールドを使用する必要があります。

+0

downwote downwoteのためだけに? –

+0

いいえ、申し訳ありませんが間違いでした。 upvoteされている必要があります。 – holyredbeard

関連する問題