Подтвердить что ты не робот

Почему безпараметрический конструктор Guid генерирует пустой GUID?

Почему конструктор Guidance без параметров генерирует пустой идентификатор GUID, а не по умолчанию, сгенерированный как с Guid.NewGuid()?

Существует ли конкретное использование для пустого Guid?

4b9b3361

Ответ 1

Почему конструктор Guidance без параметров генерирует пустой идентификатор GUID, а не по умолчанию, сгенерированный как с Guid.NewGuid()?

Короткий ответ: поскольку язык/время выполнения не позволяло конструктору типа Guid определять конструктор по умолчанию.

Не только условно, что значение структуры, построенной по умолчанию, равно нулю, вы просто не можете определить конструктор по умолчанию для структуры. Когда вы говорите новый Guid(), среда выполнения дает вам новый объект, где все поля инициализируются значениями по умолчанию: http://msdn.microsoft.com/en-us/library/ah19swz4%28VS.71%29.aspx

Некоторое обоснование можно найти здесь: http://www.yoda.arachsys.com/csharp/faq/#struct.constructors

Ответ 2

Это поведение согласуется с остальными типами значений в структуре .Net. Когда "newing up" тип значения используется значение по умолчанию. Это просто по умолчанию для Guid, аналогичное по умолчанию для Int32.

Ответ 3

Пустое руководство полезно для представления недостатка Guid. Поскольку типы значений не являются нулевыми (по умолчанию да, вы можете использовать nullable).

Например, я использую свойства Guid as Id, потому что они очень удобны в работе. Таким образом, один из способов проверить, сохранился ли объект (который есть, когда он получает свой идентификатор), я могу проверить значение id на пустой guid.

Ответ 4

Я считаю стандартным, что значение по умолчанию, структуры или встроенного типа, равно нулю.