Code Bye

像碰到这种情况怎么办

像碰到下面标红的代码的情况该怎么办?原因是IEnumerator<T>又继承了IEnumerator  泛型和非泛型都各有一个Current
代码如下:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Collections;
using System.Runtime.InteropServices;
namespace delete2
{
class Program
{
static void Main(string[] args)
{
}
}
class A : IEnumerator<string>
{
string a = “weikeli”;
public bool MoveNext()
{
return true;
}
public void Reset()
{
}
public object Current
{
get { return a; }
}
public string Current
{
get { return “liweike”; }
}

public void Dispose()
{ }
}
}

解决方案

15

引用:

    …
object IEnumerator.Current
{
get
{
return Current;
}
}

public Person Current
{
get
{
try
{
return _people[position];
}
catch (IndexOutOfRangeException)
{
throw new InvalidOperationException();
}
}
}

15

应该按照下面这样写,object前面不能加修饰符,既不像属性,也不像接口里方法声明(根本就不是借口内),当需要自定义迭代器是,一直就这么用,但无法解释!
object IEnumerator.Current
{
    get
    {
        return Current;
    }
}

CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明像碰到这种情况怎么办