C#-将字符串转换为可为空的Guid吗?

问题描述

是否有更简单的方法将字符串转换为Guid??刚才我有以下代码:

if (Guid.TryParse(request.QueryStringParameters["key"],out Guid result))
{
    whateverFunction(result);
}
else
{
    whateverFunction(null);
}

我希望有一种更简单的方法,例如强制转换为(Guid?)或执行new Guid?(),但是它们似乎都不起作用。这需要在程序中多次发生,很明显,我可以将其放在函数中,这很好,但是希望有一种更简洁的方法。

解决方法

或者,您可以这样编写代码:

var nullableGuid = Guid.TryParse(request.QueryStringParameters["key"],out var result)
    ? result
    : (Guid?)null;

whateverFunction(nullableGuid);
,

只需编写您自己的方法:

public Guid? TryParseGuid(string input)
{
   if (Guid.TryParse(input,out Guid result))
   {
       return result;
   }
   else
   {
       return null;
   }
}

您可以通过以下方式使用它:

whateverFunction(TryParseGuid(request.QueryStringParameters["key"]));
,

如果您的应用程序使用了大量的字符串,则使用扩展名代替:

public static class AppExtension
{
    public static Guid? ToGuid(this string source)
    {
        return Guid.TryParse(source,out Guid result) ? (Guid?) result : null;
    }
}

用法是:

var guidStr = "6b97c671-8cc4-4712-b3df-9dad09321a36";
var guid = guidStr.ToGuid();

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...