c# 无法实现“System.Collections.IEnumerable.GetEnumerator()“,求解决方法,能运行成功的,谢谢了
usingSystem;usingSystem.Collections.Generic;usingSystem.Linq;usingSystem.Text;usingSy...
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Collections;//比课本多一个
namespace MainClass
{
public class IteratorTest : IEnumerable
{
public string[] e;
public IteratorTest(string source, Char[] de)
{
e = source.Split(de);
}
public TIEnumerator GetEnumerator()
{
return new TIEnumerator(this);
}
public class TIEnumerator : IEnumerator
{
private int position = -1;
private IteratorTest t;
public TIEnumerator(IteratorTest t)
{
this.t = t;
}
public bool MoveNext()
{
if (position < t.e.Length - 1)
{
position++; return true;
}
else { return false; }
}
public void Reset()
{
position = -1;
}
public object Current
{
get { return t.e; }
}
}
//class P
//{
static void Main(string[] args)
{
IteratorTest it = new IteratorTest("this a hao kk.",
new Char[] { ' ', '-' });
foreach(string str in it)
{
Console.WriteLine(str);
}
string words = "This is a list of words, with: a bit of punctuation" +
"\tand a tab character.";
string[] split = words.Split(new Char[] { ' ', ',', '.', ':', '\t' });
foreach (string s in split)
{
if (s.Trim() != "")
Console.WriteLine();//s
}
}
//}
}
} 展开
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Collections;//比课本多一个
namespace MainClass
{
public class IteratorTest : IEnumerable
{
public string[] e;
public IteratorTest(string source, Char[] de)
{
e = source.Split(de);
}
public TIEnumerator GetEnumerator()
{
return new TIEnumerator(this);
}
public class TIEnumerator : IEnumerator
{
private int position = -1;
private IteratorTest t;
public TIEnumerator(IteratorTest t)
{
this.t = t;
}
public bool MoveNext()
{
if (position < t.e.Length - 1)
{
position++; return true;
}
else { return false; }
}
public void Reset()
{
position = -1;
}
public object Current
{
get { return t.e; }
}
}
//class P
//{
static void Main(string[] args)
{
IteratorTest it = new IteratorTest("this a hao kk.",
new Char[] { ' ', '-' });
foreach(string str in it)
{
Console.WriteLine(str);
}
string words = "This is a list of words, with: a bit of punctuation" +
"\tand a tab character.";
string[] split = words.Split(new Char[] { ' ', ',', '.', ':', '\t' });
foreach (string s in split)
{
if (s.Trim() != "")
Console.WriteLine();//s
}
}
//}
}
} 展开
1个回答
展开全部
类IteratorTest 没有实现 接口IEnumerable 中的GetEnumerator() 方法,
而且我没有看懂你写这么复杂的意义
foreach(string str in it)
{
Console.WriteLine(str);
}
这里面的str是string[] 不是string
而且我没有看懂你写这么复杂的意义
foreach(string str in it)
{
Console.WriteLine(str);
}
这里面的str是string[] 不是string
更多追问追答
追问
这个是书上的例子,利用IEnumerable IEnumerator和foreach实现迭代器。麻烦你帮我改改吧,谢谢你了,分数可以再加
追答
改一下IteratorTest的GetEnumerator方法, 就可以通过编译了
public class IteratorTest : IEnumerable
{
public string[] e;
public IteratorTest(string source, Char[] de)
{
e = source.Split(de);
}
public IEnumerator GetEnumerator()
{
return new TIEnumerator(this);
}
}
但是我不明白书上要的结果是什么? 是什么书?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询