C#如何使扩展接受IEnumerable而不是参数数组

巴特·卡利克斯托(Bart Calixto)

具有此扩展名

    public static bool In<T>(this T t, params T[] values)
    {
        return values.Contains(t);
    }

希望它在扩展内需要时接受IEnumerable并强制转换为数组,但是我不知道该如何使用params关键字。

尝试过:

    public static bool In<T>(this T t, params IEnumerable<T> values)
    {
        return values.Contains(t);
    }

但这会产生编译时错误:参数数组必须是一维数组

有什么方法可以使扩展方法支持IEnumerable参数?如果没有,为什么不呢?

务实的

不,这是不可能的,因为错误消息会直截了当地告诉您。

这是不可能的,因为规格说明这是不可能的。Microsoft之所以选择不实施建议的功能,可能是因为他们从未考虑过其好处大于成本。

您可以管理的最佳变通办法是创建两个重载,一个重载为,一个重载params一个IEnumerable<T>,并调用另一个(或者,由于您的方法非常简单,因此只需实现两个):

public static bool In<T>(this T t, params T[] values)
{
    return In<T>(t, values.AsEnumerable());
}

public static bool In<T>(this T t, IEnumerable<T> values)
{
    return values.Contains(t);
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何在nodejs中接受body中的参数数组

来自分类Dev

C#函数参数数组与列表

来自分类Dev

Delphi-如何将通用参数传递给接受const参数数组的函数

来自分类Dev

使用数组而不是参数数组

来自分类Dev

如何在perl中接受输出参数数组和标量?

来自分类Dev

graphql 突变如何接受带有 apollo server express 的参数数组?

来自分类Dev

在c中的参数数组

来自分类Dev

如何在C#中创建函数数组?

来自分类Dev

如何找到ActionMailer方法接受的参数数量?

来自分类Dev

如何确定函数在Haxe中接受的参数数量?

来自分类Dev

C#:如何接受两个通用参数

来自分类Dev

C#:如何接受两个通用参数

来自分类Dev

如何迭代多个参数数组

来自分类Dev

如何扩展接受数组通用元素的类型?

来自分类Dev

如何扩展接受数组通用元素的类型?

来自分类Dev

具有无限参数数组访问的C#方法

来自分类Dev

从 Delphi 调用 C# DLL,带有字节参数数组

来自分类Dev

C#读取整数数组

来自分类Dev

如何从C#中的数组传递参数?

来自分类Dev

允许参数数组

来自分类Dev

如何在Delphi中执行C ++参数数组指针算法

来自分类Dev

如何在C中制作字符串参数数组

来自分类Dev

如何使后动作接受数组参数?

来自分类Dev

如何接受类类型的数组作为参数

来自分类Dev

Array.from(arguments)是创建参数数组的可接受方法吗?

来自分类Dev

执行使用pg-promise接受参数数组的Postgresql函数

来自分类Dev

C#通过Lambda接受对象参数

来自分类Dev

如何在C#中通过TCP连接发送整数数组

来自分类Dev

如何在C#中声明2D整数数组?