Почему безпараметрический конструктор Guid генерирует пустой GUID?
Почему конструктор Guidance без параметров генерирует пустой идентификатор GUID, а не по умолчанию, сгенерированный как с Guid.NewGuid()?
Существует ли конкретное использование для пустого Guid?
Ответ 1
Почему конструктор Guidance без параметров генерирует пустой идентификатор GUID, а не по умолчанию, сгенерированный как с Guid.NewGuid()?
Короткий ответ: поскольку язык/время выполнения не позволяло конструктору типа Guid определять конструктор по умолчанию.
Не только условно, что значение структуры, построенной по умолчанию, равно нулю, вы просто не можете определить конструктор по умолчанию для структуры. Когда вы говорите новый Guid(), среда выполнения дает вам новый объект, где все поля инициализируются значениями по умолчанию: http://msdn.microsoft.com/en-us/library/ah19swz4%28VS.71%29.aspx
Это поведение согласуется с остальными типами значений в структуре .Net. Когда "newing up" тип значения используется значение по умолчанию. Это просто по умолчанию для Guid, аналогичное по умолчанию для Int32.
Ответ 3
Пустое руководство полезно для представления недостатка Guid. Поскольку типы значений не являются нулевыми (по умолчанию да, вы можете использовать nullable).
Например, я использую свойства Guid as Id, потому что они очень удобны в работе. Таким образом, один из способов проверить, сохранился ли объект (который есть, когда он получает свой идентификатор), я могу проверить значение id на пустой guid.
Ответ 4
Я считаю стандартным, что значение по умолчанию, структуры или встроенного типа, равно нулю.