невозможно получить доступ к созданному объекту c # / asp.net - PullRequest
1 голос
/ 12 февраля 2012

У меня есть приложение, которое создает экземпляр объекта из класса «SecretNumber», когда завершается получение страницы.После этого я хочу работать с объектом, который создается, а не создавать новый.

Ниже приведен фрагмент моего кода из исходного кода, и проблема в том, что я не могу использоватьссылка на объект внутри функции кнопки.Я получаю сообщение об ошибке, говорящее, что имя не существует в текущем контексте.

Как это можно решить?Заранее спасибо!

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
        }
    }
}

Ответы [ 4 ]

1 голос
/ 12 февраля 2012

Переместите объявление переменной из области видимости метода, чтобы оно стало приватным полем типа _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 голосов
/ 12 февраля 2012

Я предполагаю, что вам нужно прочитать некоторую основную информацию о классах в C # (поля, методы, события). Это не проблема ASP.NET, потому что ASP.NET придерживается той же парадигмы, что и любая другая технология .NET с точки зрения ООП.

Очевидно, вам нужно использовать поле типа SecretNumber здесь

0 голосов
/ 12 февраля 2012

Поставьте guessNr вне Page_Load, если вы хотите получить к нему доступ в btnCheckNr.

SecretNumber guessNr;

и затем назначьте его в Page_Load Метод.

0 голосов
/ 12 февраля 2012
SecretNumber guessNr = new SecretNumber();

На самом деле ничего не делает.Вам нужно:

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
        }
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...