重载GetEnumerator

时间:2009-10-23 12:24:24

标签: c# collections overloading

我不能像

一样重载GetEnumerator()
IEnumerator<T> IEnumerable<T>.GetEnumerator<T> ( T[] val1,T[] val2)

{

  .... some code

}

4 个答案:

答案 0 :(得分:3)

没有。只需创建一个普通的方法,例如

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

答案 1 :(得分:2)

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

答案 2 :(得分:1)

GetEnumerator不接受参数。

答案 3 :(得分:0)

扩展方法怎么样?

即:


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);
...

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