странная ошибка при создании объекта - PullRequest
0 голосов
/ 12 февраля 2012

Ниже приведен код моего файла в моем проекте, и, как вы можете видеть, я создаю экземпляр объекта класса с именем «SecretNumber» в Page_Load.Недавно у меня была проблема с доступом к ссылке на объект в функции кнопки, потому что я забыл вывести ссылку из области (private SecretNumber guessNr).

Однако по какой-то странной причине этот код генерирует следующую ошибку:«Поле« _Default.guessNr »никогда не назначается и всегда будет иметь значение по умолчанию, равное null».

Если я удалю «private SecretNumber guessNr» (который генерирует ошибку), проблема не может быть достигнутассылка на объект из функции кнопки снова появляется, поэтому очевидно, что ссылка назначена объекту.

Почему я получил эту ошибку и как ее решить?

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

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

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

        // The rest of the code goes here
    }
}

1 Ответ

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

Вам необходимо внести небольшие изменения в ваш метод Page_Load

private SecretNumber guessNr; // declared field here

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

Как у вас есть, вы объявляете локальную переменную с тем же именем. Он скрывает поле уровня класса внутри метода.

int x; // this is a class level field
int y; // same

public void Foo() 
{
    int x; // this is a local of the same name
    this.x = 7; // this is how you would access the class field from this method
    y = 4; // no need for "this." for disambiguation
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...