这两种将字符串转换为System.Guid
的方法有什么不同?有理由选择一个而不是另一个吗?
var myguid = Guid.Parse("9546482E-887A-4CAB-A403-AD9C326FFDA5");
或
var myguid = new Guid("9546482E-887A-4CAB-A403-AD9C326FFDA5");
发布于 2011-08-03 01:27:06
在Reflector中快速查看一下,就会发现两者几乎是等效的。
public Guid(string g)
{
if (g == null)
{
throw new ArgumentNullException("g");
}
this = Empty;
GuidResult result = new GuidResult();
result.Init(GuidParseThrowStyle.All);
if (!TryParseGuid(g, GuidStyles.Any, ref result))
{
throw result.GetGuidParseException();
}
this = result.parsedGuid;
}
public static Guid Parse(string input)
{
if (input == null)
{
throw new ArgumentNullException("input");
}
GuidResult result = new GuidResult();
result.Init(GuidParseThrowStyle.AllButOverflow);
if (!TryParseGuid(input, GuidStyles.Any, ref result))
{
throw result.GetGuidParseException();
}
return result.parsedGuid;
}
发布于 2011-08-03 01:27:14
请使用您最易读的版本。两者的实现方式几乎完全相同。
唯一真正的区别是构造函数在尝试解析之前将自身初始化为Guid.Empty
。然而,有效的代码是相同的。
也就是说,如果Guid
来自用户输入,那么Guid.TryParse
将比这两个选项都要好。如果这个Guid
是硬编码的,并且总是有效的,那么上面的任何一个都是非常合理的选择。
发布于 2011-08-03 01:25:54
我会选择TryParse
。它不会抛出异常。
https://stackoverflow.com/questions/6915966
复制相似问题