当T是列表时default(T)为null

c#

给定以下函数:

public static T GetCachedBoxedValue<T>(string cacheKey, Func<T> getFromExternFunction, bool skipLocalCaches = false)
{
    var r = Manager.Get(
        cacheKey,
        () => new Tuple<T>(
            getFromExternFunction()
        ),
        skipLocalCaches
    );
    if (r == null || r.Item1 == null)
    {
        return default;
    }
    return r.Item1;
}

当 T 为 aList<Guid>r值为 null 时,它返回 null。我将如何修改它以返回一个新的空列表?

回答

您可以将新约束添加到方法并调用new T()

public static T GetCachedBoxedValue<T>(string cacheKey, Func<T> getFromExternFunction, bool skipLocalCaches = false)
    where T:new()
{
    ...
    if (r == null || r.Item1 == null)
    {
        return new T();
    }
    return r.Item1;
}

new约束告诉调试只有那些有参数的构造函数可以使用的类型,让您调用它。

default所有引用类型值null。另一方面,空 List 是完全构造的 List 实例。有关默认值的更多信息,请参阅:https : //docs.microsoft.com/en-us/dotnet/csharp/language-reference/builtin-types/default-values


以上是当T是列表时default(T)为null的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>