我有一个返回ILookup的方法。在某些情况下,我想返回一个空的ILookup作为提前退出。构造空ILookup的最佳方法是什么?

最佳答案

除了mquanderVasile Bujac的答案之外,您还可以创建一个漂亮,简单的单例EmptyLookup<K,E>类,如下所示。 (我认为,按照Vasile的回答,创建完整的ILookup<K,E>实现似乎没有多大好处。)

var empty = EmptyLookup<int, string>.Instance;

// ...

public static class EmptyLookup<TKey, TElement>
{
    private static readonly ILookup<TKey, TElement> _instance
        = Enumerable.Empty<TElement>().ToLookup(x => default(TKey));

    public static ILookup<TKey, TElement> Instance
    {
        get { return _instance; }
    }
}

10-06 08:07