提问者:小点点

无法从外部系统转换。Guid?到系统。指南


我正在尝试将字符串解析为可为空的guid。根据TryParse结果,可为null的guid应存储值或为null。

private Guid? GetData()
{
    string carName = "Volvo";
    Guid? data = Guid.TryParse(carName, out data) ? (Guid?)data : null;
    
    return data;
}

我在带有消息的输出数据上遇到编译时错误


共3个答案

匿名用户

您需要使用不同的变量名:

Guid? data = Guid.TryParse(carName, out Guid _data) ? (Guid?)_data : null;

目前,您使用data

  • 最终结果(aGuid?)和
  • TryParseout参数(需要是Guid,而不是Guid?)。

匿名用户

让我们把它变得简单、合乎逻辑、可读

if (Guid.TryParse(carName, out Guid g)
    return g;
return null;

如果有三条线打扰你

return Guid.TryParse(carName, out Guid g) ? g : (Guid?)null;

匿名用户

最好不要在一行中做这么多。这将使它更容易阅读和理解。

private Guid? GetData()
    {
        string carName = "Volvo";
        // First try to parse the string into a guid
        var canParse = Guid.TryParse(carName, out var data);

        // Return either the converted value or null
        return canParse ? data : null;
    }