Почему тип-значение Guid можно сравнивать с null, а все другие типы-значения нельзя.
public struct B
{
}
...
var b = new B();
if (b == null) // CS0019 Operator '==' cannot be applied to operands of type 'B' and '<null>'
Console.WriteLine("!!!");
var g = new Guid();
if (g == null) // OK
Console.WriteLine("OK");
Понятно, почему все другие нельзя. Не понятно, почему вдруг Guid можно.
Кстати, Nullable<> типы это тоже значения и тем не менее их можно сравнивать с null (что естественно, тут особый случай).
Интересно могу ли я написать свой тип-значение, который будет нормально сравниваться с null? (в нужном мне смысле)