当前位置:  开发笔记 > 编程语言 > 正文

强类型返回泛型函数的适当方法是什么?

如何解决《强类型返回泛型函数的适当方法是什么?》经验,为你挑选了1个好方法。

我正在编写一个过滤器函数来返回从更大的超类型集合(例如对象)中指定的特定类型.这个想法是我给你一个可枚举的,你举例说明了所有的字符串.你可以这样写,没有泛型:

public static IEnumerable Filter(IEnumerable source, Type type)
{
    List results = new List();

    foreach(object o in source)
    {
        if(o != null && o.GetType() == type)
        {
            results.Add(o);
        }
    }

    return results;
}


如果我们想要返回泛型,有几种不同的方法可以解决它.

作为直接端口:

public static IEnumerable Filter
                          (IEnumerable source, Type type)

传递'示例':

IEnumerable Filter
    (IEnumerable source, TResult resultType)

最终我认为最干净的是:

public static IEnumerable Filter(IEnumerable source)

第二种类型将完全使用参数调用(并推断类型):

Filter(myList, "exampleString");

作为最终版本,将使用类型说明符调用:

Filter(myList);

强类型返回泛型函数的适当方法是什么,其中返回类型不会自动隐含在签名中?(为什么?)

(编辑注意:我们的输入没有输入,例如IEnumerable .最好是IEnumerable.这个函数将Ts退出其他类型的整个集合.)



1> Coincoin..:

Linq中包含的以下扩展方法可以满足您的需求:

IEnumerable OfType(this IEnumerable enumerable);

这是一个用法示例:

List objects = //...

foreach(string str in objects.OfType())
{
    //...
}


如您所见,他们使用泛型参数作为返回类型说明符.这比使用Type或字符串更简单,更安全,并返回非类型安全枚举.

推荐阅读
刘美娥94662
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有