UPDATE

Guid.TryParse在中提供.NET 4.0

END UPDATE

显然,在.NET CLR 2.0中没有公共GUID.TryParse().

所以,我研究了正则表达式(也就是用谷歌搜索寻找一个正则表达式),每次我发现一个正则表达式时, comments 区就会有一场关于RegEx A不起作用的激烈争论,使用RegEx B.然后有人会写Regex C yadda yadda

所以不管怎样,我决定这么做,但我对此感到很难过.

public static bool IsGuid (string possibleGuid) {

    try {
      Guid gid = new Guid(possibleGuid);
      return true;    
    } catch (Exception ex) {
      return false;
    }
}

显然,我真的不喜欢这样,因为它从第一天开始就一直灌输给我,以避免抛出异常(如果您可以围绕它编写具有防御性的代码的话).

有人知道为什么没有公共Guid吗.中的TryParse().NET框架?

有没有人有一个真正的正则表达式可以用于所有guid?

推荐答案

没有Guid.CLR 2.0及更早版本中的TryParse.它将从CLR 4.0和Visual Studio 2010开始提供.

至于为什么没有.这类问题通常很难回答正确.很可能是疏忽或时间限制问题.如果您在反射器中打开mcotlib,您会看到实际上有一个名为TryParse的方法,在Guid上,但它是私有的.它在某些情况下也会抛出异常,所以它不是一个很好的类似功能,比方说Int32.TryParse.

Asp.net相关问答推荐

域名 + 子域名在IIS部署

在 Web.Config 中模拟标签

如何将标头中的用户名/密码传递给 SOAP WCF 服务

将 NUnit 添加到 ASP.NET MVC 测试框架的选项中

未知的网络方法.参数名称:methodName

使用 C# 和 ASP.NET 从 Gmail/Hotmail/Yahoo 导入通讯簿

ASP.NET 平台是否有与 Heroku 等价的工具?

在控制器 asp.net mvc 5 的视图上显示错误消息

asp.net mvc 中的 RedirectToAction 用法

在使用网络服务器加载它们之前,如何编译 Asp.Net Aspx 页面?

GridView 与嵌套类的属性绑定

使用 ASPNet_Regiis 加密自定义配置部分 - 你能做到吗?

在 JavaScript 中获取当前会话值?

当.NET抛出WebException((400)错误请求)时如何处理WebResponse?

如何将参数传递给 ASP.NET MVC 2 中的自定义 ActionFilter?

对于 DB ID,需要一个较小的 GUID 替代方案,但对于 URL 仍然是唯一且随机的

头标记中的内联代码 - ASP.NET

为在 ASP.NET Web API 中使用 User.Identity.Name 的方法编写单元测试

将Bundle 包添加到现有的 ASP.NET Webforms 解决方案

POST 字符串到 ASP.NET Web Api 应用程序 - 返回 null