Управляйте сеттером, чтобы избежать нуля

1

обычно мы имеем:

public string code { get; set; }

Мне нужно избегать исключения ссылочной ссылки, если в конце концов кто-то устанавливает код в null

Я пробую эту идею... любую помощь?

public string code { get { } set { if (code == null) { code = default(string); }}}
Теги:
properties

2 ответа

4
Лучший ответ

Вам нужно объявить поле поддержки, которое Ill вызывает здесь _code:

private string _code = "";
public string Code
{
    get
    {
        return _code;
    } 
    set 
    { 
        if (value == null) 
            _code = "";
        else
            _code = value;
    }
}

Ive также переименовал свойство в Code потому что в С# принято использовать все, что доступно публике.

Обратите внимание, что в вашем собственном коде вы указали default(string), но это то же самое, что и null.

Вместо того, чтобы _code на "", распространенная практика - исключение:

private string _code = "";
public string Code
{
    get
    {
        return _code;
    } 
    set 
    { 
        if (value == null) 
            throw new ArgumentNullException("value");
        _code = value;
    }
}
  • 0
    Мне также нравится set { _code = value ?? ""; } что эквивалентно установщику в вашем первом примере кода.
  • 0
    @Grax: я придерживался базовых принципов, потому что ОП явно новичок.
1

вы можете попробовать это

  private string _code="";


public string Code
{
    get
    {  return _code ; } 

    set 
    {
       _code = value ?? "";
    }
}
  • 0
    Это неполно Вы должны определить вспомогательную переменную, если вы ее используете. private string _code = "";
  • 0
    Теперь это нормально?
Показать ещё 4 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню