Если вы посмотрите исходный код конструктора Guid(string)
в исходном коде .NET 4.5.2, то он выглядит следующим образом:
public Guid(String g)
{
if (g==null) {
throw new ArgumentNullException("g");
}
Contract.EndContractBlock();
this = Guid.Empty;
GuidResult result = new GuidResult();
result.Init(GuidParseThrowStyle.All);
if (TryParseGuid(g, GuidStyles.Any, ref result)) {
this = result.parsedGuid;
}
else {
throw result.GetGuidParseException();
}
}
Вопрос в том, какова цель линии this = Guid.Empty;
?
Из того, что я могу увидеть, если string g
можно успешно проанализировать в методе TryParseGuid
, тогда будет назначен this
. Если он не может, тогда будет выбрано исключение.
Предположим, вы написали:
var guid = new Guid("invalidguid");
Это приведет к исключению, и значение guid будет undefined, я бы предположил. Итак, почему необходимо назначить this
- Guid.Empty
?