首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Guid.Parse()或new Guid() -有什么区别?

Guid.Parse()或new Guid() -有什么区别?
EN

Stack Overflow用户
提问于 2011-08-03 01:24:00
回答 4查看 29.5K关注 0票数 87

这两种将字符串转换为System.Guid的方法有什么不同?有理由选择一个而不是另一个吗?

var myguid = Guid.Parse("9546482E-887A-4CAB-A403-AD9C326FFDA5");

var myguid = new Guid("9546482E-887A-4CAB-A403-AD9C326FFDA5");
EN

回答 4

Stack Overflow用户

回答已采纳

发布于 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;
}
票数 98
EN

Stack Overflow用户

发布于 2011-08-03 01:27:14

请使用您最易读的版本。两者的实现方式几乎完全相同。

唯一真正的区别是构造函数在尝试解析之前将自身初始化为Guid.Empty。然而,有效的代码是相同的。

也就是说,如果Guid来自用户输入,那么Guid.TryParse将比这两个选项都要好。如果这个Guid是硬编码的,并且总是有效的,那么上面的任何一个都是非常合理的选择。

票数 28
EN

Stack Overflow用户

发布于 2011-08-03 01:25:54

我会选择TryParse。它不会抛出异常。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6915966

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档