读书人

求指点:非泛型 类型“System.Collect

发布时间: 2013-10-16 11:29:46 作者: rapoo

求指导:非泛型 类型“System.Collections.IEnumerator”不能与类型实参一起使用
using System;
using System.Collections;
using System.Linq;
using System.Text;

namespace TestIterator1
{
public class Tokens : IEnumerable
{
private string elements;
Tokens(string source,char delimiters )
{
elements = source.Split(delimiters);
}
public IEnumerator<char> GetEnumerator()
{
return new TokenEnumerator(this);
}
private class TokenEnumerator : IEnumerator
{
private int position = -1;
private Tokens t;
public TokenEnumerator(Tokens t)
{
this.t = t;
}
public bool MoveNext()
{
if (position < t.elements.Length - 1)
{
position++;
return true;
}
else { return false; }
}
public void Reset()
{
position = -1;
}
public object Current
{
get { return t.elements; }
}
}
}
class Program
{
static void Main(string[] args)
{
Tokens f = new Tokens("This is a well-done program!", new char { ' ', '-' });
foreach (string item in f)
{
Console.WriteLine(item);
}
Console.ReadKey();
}
}
}
运行后出显现错误:错误1 非泛型 类型“System.Collections.IEnumerator”不能与类型实参一起使用


这段代码我是照着书上编的,功能是隔一行显示一个字母。请问各位大侠,问题是不是红色部分代码没写好,要改怎么改啊?
[解决办法]
public class Tokens : IEnumerable<char>
{
private string[] elements;
public Tokens(string source, char

[] delimiters)
{
elements = source.Split(delimiters);
}
public IEnumerator<char> GetEnumerator()
{
return new TokenEnumerator(this);
}
private class TokenEnumerator : IEnumerator<char> {
private int position = -1;
private Tokens t;
public TokenEnumerator(Tokens t)
{
this.t = t;
}
public bool MoveNext()
{
if (position < t.elements.Length - 1)
{
position++;
return true;
}
else { return false; }
}
public void Reset()
{
position = -1;
}
public object Current
{
get { return t.elements; }
}
}
}
class Program
{
static void Main(string[] args)
{
Tokens f = new Tokens("This is a well-done program!", new[] { ' ', '-' });
foreach (var item in f)
{
Console.WriteLine(item);
}
Console.ReadKey();
}
}

读书人网 >C#

热点推荐