C # значение по умолчанию в конструкторе так же, как два конструктора для сериализации - PullRequest
8 голосов
/ 04 ноября 2011

Когда я предоставляю конструктору значение по умолчанию

  public MyClass(string description = null) { .... }

это эквивалентно

  public MyClass() { .... }
  public MyClass(string description) { .... }

в терминах Сериализация . Другими словами, доступен ли конструктор по умолчанию ? Практически это так, но столкнусь ли я с некоторыми проблемами при использовании сериализации?

Ответы [ 2 ]

7 голосов
/ 04 ноября 2011

Нет. К сожалению, это не конструктор по умолчанию.

Когда вы пишете:

public MyClass(string description = null) { .... }

Вы фактически создаете конструктор, который принимает строковый параметр, но имеет атрибут, отмечающий значение по умолчанию для этого атрибута. Это отличается от наличия конструктора по умолчанию в классе.

2 голосов
/ 04 ноября 2011

Да, у вас будут проблемы в этом случае.

Я пытался вызвать описанный вами конструктор с помощью отражения, и он вызвал TargetInvokationException: (Несоответствие числа аргументов).

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