C#如何处理GUID返回类型异常?

JL.*_*JL. 3 c#

我有一个带有以下签名的方法:

public Guid FindTermIDFromCustomProperty() 
{
     // Logic here to find an item and return the guid 
}
Run Code Online (Sandbox Code Playgroud)

我的问题是,如果在函数中没有找到任何项目,那么将不会返回GUID - 这不用说了!但有没有办法返回一些平淡的GUID?

更好的是,我可以采用更通用的方法,不仅仅是针对GUID,而且通常在我返回强类型时?我真的不想将对象用作返回类型,必须有更好的方法.

提前致谢.

Mar*_*ath 7

要回答你的第一个问题,你可以使用Guid.Empty,它返回一个保证全为零的guid.

至于你的第二个问题,一种方法是返回一个bool并使用out参数作为参数,bool指示你是否有值.不是每个人都喜欢使用参数.

public bool FindTermIDFromCustomProperty(out Guid termId) 
Run Code Online (Sandbox Code Playgroud)


Chr*_*isF 7

你可以返回一个可以为空的Guid,所以如果找不到任何项,你将返回null

public System.Nullable<Guid> FindTermIDFromCustomProperty() 
{
     // Logic here to find an item and return the guid

     if (!found)
     {
         return null;
     }
}
Run Code Online (Sandbox Code Playgroud)

可空类型适用于结构.

引用类型已经可以设置为null.


Joe*_*ite 5

如果您使用的是.NET 2.0或更高版本,则可以返回可为空的类型.

public Guid? FindTermIDFromCustomProperty() 
{
    // Logic here to find an item and return the guid 
    else
        return null;
}

var guid = FindTermIDFromCustomProperty();
if (guid.HasValue) // or "if (guid != null)"
    DoSomethingWith(guid.Value);
Run Code Online (Sandbox Code Playgroud)