C# 非泛型类中的泛型方法?

声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow 原文地址: http://stackoverflow.com/questions/423605/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me): StackOverFlow

提示:将鼠标放在中文语句上可以显示对应的英文。显示中英文
时间:2020-08-04 02:50:22  来源:igfitidea点击:

Generic method in a non-generic class?

c#generics

提问by John Paul Jones

I'm sure I've done this before, but can't find any example of it! Grrr...

我确定我以前做过这个,但找不到任何例子!咕噜噜...

For example, I want to convert an IList<T>into a BindingList<T>:

例如,我想将 an 转换IList<T>为 a BindingList<T>

public class ListHelper
{
    public static BindingList<T> ToBindingList(IList<T> data)
    {
        BindingList<T> output = new BindingList<T>();

        foreach (T item in data)
            output.Add(item);

        return output;
    }
}

采纳答案by Sander

ToBindingList <T> (...)


public class ListHelper
{
    public static BindingList<T> ToBindingList<T>(IList<T> data)
    {
        BindingList<T> output = new BindingList<T>();

        foreach (T item in data)
        {
            output.Add(item);
        }

        return output;
    }
}

回答by Ali Ers?z

You can do this by extension method and it would be better.

你可以通过扩展方法来做到这一点,这样会更好。

public static class Extensions
{
    public static BindingList<T> ToBindingList<T>(this IList<T> list) 
    {
        BindingList<T> bindingList = new BindingList<T>();

        foreach (var item in list)
        {
            bindingList.Add(item);
        }

        return bindingList;
    }
}

回答by bruno conde

Wouldn't this be simpler?

这不是更简单吗?

public static class Extensions
{
    public static BindingList<T> ToBindingList<T>(this IList<T> list)
    {
        return new BindingList<T>(list);
    }
}

It's so simple that we don't need an extension method ...

太简单了,我们不需要扩展方法......

Am I missing something?

我错过了什么吗?