Вопрос
Я хотел бы иметь класс, способный обрабатывать нулевую ссылку. Как я могу это сделать? Методы расширения - единственный способ, которым я могу это сделать, но подумал, что попрошу, если бы была какая-то отличная вещь, о которой я не знал о С#.
Пример
У меня есть класс под названием User
со свойством IsAuthorized
.
Если User
правильно создан IsAuthorized
имеет реализацию. Однако, когда моя ссылка User
содержит null, я бы хотел, чтобы вызов IsAuthorized
возвращал false вместо взрыва.
Решение
Много хороших ответов. Я решил использовать три из них, чтобы решить мою проблему.
- Я использовал шаблон дизайна Null Object, предложенный Заидом Масудом.
- Я объединил это с предложением Белмира по использованию структуры, поэтому я не мог иметь нулевую ссылку
- И получилось отличное объяснение, почему С# работает таким образом и как я могу действительно решить его от Jon Hanna.
К сожалению, я могу выбрать только один из них в качестве моего принятого ответа, поэтому, если вы посещаете эту страницу, вы должны потратить время на голосование по всем трем из них и любым другим отличным ответам, которые были даны.