C# GetEnumerator的重载

C# GetEnumerator的重载,c#,collections,overloading,C#,Collections,Overloading,我不能像这样重载GetEnumerator()吗 IEnumerator IEnumerable.GetEnumerator(T[]val1,T[]val2) { ……一些代码 } GetEnumerator不接受参数。GetEnumerator不接受参数。否。只需创建一个普通方法即可,例如 IEnumerator<T> MyCustomEnumerator<T>(T[] val1, T[] val2) { // some code } IEnumerator

我不能像这样重载GetEnumerator()吗

IEnumerator IEnumerable.GetEnumerator(T[]val1,T[]val2)
{
……一些代码
}

GetEnumerator不接受参数。

GetEnumerator不接受参数。

否。只需创建一个普通方法即可,例如

IEnumerator<T> MyCustomEnumerator<T>(T[] val1, T[] val2) {
    // some code
}
IEnumerator MyCustomEnumerator(T[]val1,T[]val2){
//一些代码
}

否。只需创建一个普通方法即可,例如

IEnumerator<T> MyCustomEnumerator<T>(T[] val1, T[] val2) {
    // some code
}
IEnumerator MyCustomEnumerator(T[]val1,T[]val2){
//一些代码
}

您可以为
GetEnumerator
方法提议重载,但它不能成为
IEnumerable
实现的一部分。

您可以为
GetEnumerator
方法提议重载,但不能成为
IEnumerable
实现的一部分。

扩展方法如何

i、 e:


公共静态类IEnumeratorExtensions
{
公共静态IEnumerator GetEnumerator(此IEnumerable ie,
T[]val1,T[]val2)
{
//你的代码在这里
}
}
...
字符串[]s1;
字符串[]s2;
var qry=来自新字符串[]{“1”,“2”}
选择s;
qry.GetEnumerator(s1,s2);
...

但是在这个“超负荷”中你想做什么?如果您想合并这两个T数组,IEnumerable已经有了许多采用方法的方法。确保你没有重新发明轮子

扩展方法怎么样

i、 e:


公共静态类IEnumeratorExtensions
{
公共静态IEnumerator GetEnumerator(此IEnumerable ie,
T[]val1,T[]val2)
{
//你的代码在这里
}
}
...
字符串[]s1;
字符串[]s2;
var qry=来自新字符串[]{“1”,“2”}
选择s;
qry.GetEnumerator(s1,s2);
...
但是在这个“超负荷”中你想做什么?如果您想合并这两个T数组,IEnumerable已经有了许多采用方法的方法。确保你没有重新发明轮子


public static class IEnumeratorExtensions
{
    public static IEnumerator<T> GetEnumerator<T>(this IEnumerable<T> ie,
        T[] val1, T[] val2)
    {
        //your code here
    }
}

...
string[] s1;
string[] s2;

var qry = from s in new string[]{"1", "2"}
          select s;

qry.GetEnumerator(s1, s2);
...