微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

c# – 扩展方法可以有通用参数吗?

扩展方法可以说:List作为参数之一吗?

public static IEnumerable<XElement> GetSequenceDescendants(this IEnumerable<XElement> elements,params List<XName> names)
        {
            //do something
        }

扩展方法可以对参数类型有任何限制吗?

解决方法

简短的回答是扩展方法只是一个公共静态方法,可以像第一个参数的实例方法一样访问(感谢this关键字).这意味着您可以使用可在任何静态方法中使用的相同参数.

但是,如果您希望参数实际上是通用的,则需要将方法更改为:

public static IEnumerable<TElement> GetSequenceDescendants<TElement,TName>(this IEnumerable<TElement> elements,List<TName> names)
{
    //do something
}

您必须在方法定义中指定所有泛型参数.

此外,除了数组之外,你不能使用params关键字,即params TName []是可以的,但params List< TName>不是.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐