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

StackOverflow https://stackoverflow.com/questions/401198

Вопрос

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

Есть ли какое-то конкретное применение для пустого Guid?

Это было полезно?

Решение

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

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

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

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

Другие советы

Такое поведение согласуется с остальными типами значений в .Net framework.При "обновлении" типа значения используется значение по умолчанию.Это просто значение по умолчанию для Guid, аналогичное значению Int32 по умолчанию 0.

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

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top