C#组合扩展方法和变量参数列表(params关键字)

问题描述 投票:-1回答:1

我有一个扩展方法,该方法将对象数组作为唯一参数,因此我想利用params关键字,这样我就可以传递可变数量的对象,而不必构建一个一次性数组(即,使语法糖帮我做):

params

现在让我们仅使用整数参数,尽管要明确表示不涉及子类型多态性。

但是我也希望从其他具有固定数量参数的地方调用该方法

int[] myParameters = ...
object myResult = myParameters.ExtensionMethod();

以下尝试均未通过相同的错误消息声明扩展方法

int parameter1, parameter2 = ...
object myResult = ExtensionMethodsClass.ExtensionMethod(parameter1, parameter2);

参数数组不能与扩展方法的'this'修饰符一起使用

这将导致方法签名冲突

object ExtensionMethod(this params int[] myParameters) { ... }
object ExtensionMethod(params this int[] myParameters) { ... }

类型'...'已经定义了具有相同参数类型的成员'...'。

而且这似乎很愚蠢,它定义了两个方法(第二个方法构建一个数组来调用第一个方法:]]

object ExtensionMethod(this int[] myParameters() { ... }
object ExtensionMethod(params int[] myParameters() { ... }

我有什么选择?

我有一个扩展方法,该方法将对象数组作为唯一参数,所以我想利用params关键字,这样我就可以传递可变数量的对象,而不必构建...

c# overloading extension-methods
1个回答
0
投票

用途:

© www.soinside.com 2019 - 2024. All rights reserved.