代码改变世界

给 C# 中的 Guid 扩展一个 TryParse 方法

2011-12-15 09:58  音乐让我说  阅读(1813)  评论(0编辑  收藏  举报

由于项目是用 VS 2008 开发的,一直不知道原来 .NET 4.0 中 Guid 已经有了 Guid.TryParse 方法了。我这个方法适用于 VS 2008 开发的项目。废话不多说,直接贴代码,代码很简单:

using System;

namespace ConAppGuidExtensions
{
class Program
{
static void Main(string[] args)
{
string s = Guid.NewGuid().ToString();
Guid result;
if(GuidExtensions.TryParseGuid(s,out result))
{
Console.WriteLine("转换成功!返回值:" + result.ToString());
}
s = "sldfkjs";
if (GuidExtensions.TryParseGuid(s, out result))
{
Console.WriteLine("转换成功!返回值:" + result.ToString());
}
else
{
Console.WriteLine("转换失败!返回值:" + result.ToString());
}
}
}

class GuidExtensions
{
/// <summary>
/// 尝试将一个字符串转换为 Guid 类型
/// </summary>
/// <param name="s">要转换的字符串</param>
/// <param name="result">当此方法返回时,如果转换成功,则包含与 s 所包含的 Guid 等效的 Guid 值;如果转换失败,则返回 Guid 的默认值。</param>
/// <returns>如果 s 转换成功,则为 true;否则为 false。</returns>
public static bool TryParseGuid(string s, out Guid result)
{
if(string.IsNullOrEmpty(s))
{
result = default(Guid);
return false;
}
Guid? tempGuid;
try
{
tempGuid = new Guid(s);
}
catch (Exception)
{
tempGuid = null;
}
bool flag;
if (tempGuid.HasValue)
{
result = tempGuid.Value;
flag = true;
}
else
{
result = default(Guid);
flag = false;
}
return flag;
}
}
}

 

运行截图:

谢谢浏览!