Вопрос

Пустой Guid

В чем разница между

new Guid("00000000-0000-0000-0000-000000000000")

new Guid("10000000-0000-0000-0000-000000000000")

и Guid.Empty?

Нравится

2 комментария
Лучший ответ

1 и 2 - разные значения Guid.

Guid.Empty - это статичная константа, в которой лежит Guid = "00000000-0000-0000-0000-000000000000".

Нулевым Guid символизируется отсутствие значения, так как в C# тип Guid - это структура, следовательно не может принимать null.

При считывании из БД справочного значения null в переменную будет присваиваться "00000000-0000-0000-0000-000000000000". Для БД нулевой Guid является валидным значением, и если попробуете присвоить его в справочное поле, то БД выдаст ошибку ограничения внешнего ключа (в ссылаемой таблице нет значения с Id состоящим из нулей). Как раз для этих случаев переменные сравнивают с константой Guid.Empty, чтобы случайно не установить такое значение и не поломать процесс ошибкой.

1 и 2 - разные значения Guid.

Guid.Empty - это статичная константа, в которой лежит Guid = "00000000-0000-0000-0000-000000000000".

Нулевым Guid символизируется отсутствие значения, так как в C# тип Guid - это структура, следовательно не может принимать null.

При считывании из БД справочного значения null в переменную будет присваиваться "00000000-0000-0000-0000-000000000000". Для БД нулевой Guid является валидным значением, и если попробуете присвоить его в справочное поле, то БД выдаст ошибку ограничения внешнего ключа (в ссылаемой таблице нет значения с Id состоящим из нулей). Как раз для этих случаев переменные сравнивают с константой Guid.Empty, чтобы случайно не установить такое значение и не поломать процесс ошибкой.

Egor Vladimirsky,

Добрый день Егор, подскажите какая у вас проблема?

Показать все комментарии