Почему я получаю исключение со следующим кодом? - PullRequest
2 голосов
/ 05 ноября 2010

У меня есть свойство, определенное в интерфейсе как:

 Boolean IsBusy { get; }

Оно реализовано в классе как:

private Boolean _isBusy = false;
public Boolean IsBusy
    {
        get
        {
            return this._isBusy;
        }

        private set
        {
            if (this._isBusy != value)
            {
                this._isBusy = value;
                this.OnPropertyChanged("IsBusy");
            }
        }
    }

Затем, когда я запускаю приложение, я всегда получаю следующееВид ошибки при проверке значения IsBusy в конструкторе:

«IsBusy» вызвал исключение типа «System.NullReferenceException» bool {System.NullReferenceException}

Не могу понять.Если я поменяю все Boolean на bool, получу ту же ошибку.

Как я могу это исправить?

Ответы [ 7 ]

10 голосов
/ 05 ноября 2010

Вы исправляете это, проверяя, является ли OnPropertyChanged нулевым, прежде чем вызывать его, предполагая, что OnPropertyChanged является событием или переменной делегата (вы не сделали это ясно).Это не имеет ничего общего с bool или Boolean, которые эквивалентны (при условии, что Boolean разрешено до System.Boolean).

Я не вижу никакой другой причины, по которой он выбрасывает NullReferenceException - хотя это действительно поможет вам выяснить, вызывали ли вы геттер или сеттер в тот момент, когда он вызывал исключение.Короткий, но полный пример был бы еще более полезным.

1 голос
/ 05 ноября 2010

C # содержит псевдоним для всех нативных типов.Строка для строки, Int32 для int и т. Д. Разница, с которой вы используете, не имеет разницы:

Строка против строки в C #

Логическое значение не может быть NULL, поэтому выВероятно, возникла ошибка из-за чего-то в OnPropertyChanged.

1 голос
/ 05 ноября 2010
  1. bool - это псевдоним C # для структуры System.Boolean. Они одинаковы.
  2. Ваша проблема, вероятно, в том, что this.OnPropertyChanged не назначен. Это совершенно не связано с bool против Boolean.
1 голос
/ 05 ноября 2010

нет.Boolean - это то, что .net CLI использует для представления значения true / false.bool - это то, что использует c #.

1 голос
/ 05 ноября 2010

И bool, и Boolean оценивают одно и то же при компиляции.

1 голос
/ 05 ноября 2010

bool - это просто синтаксическое сокращение для Boolean

0 голосов
/ 05 ноября 2010

Ключевое слово bool является просто псевдонимом типа для ключевого слова Boolean.

Так же, как int, это псевдоним для Int32.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...