首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > C# >

求指点:非泛型 类型“System.Collections.IEnumerator”不能与类型实参一起使用

2013-10-16 
求指导:非泛型 类型“System.Collections.IEnumerator”不能与类型实参一起使用using Systemusing System.C

求指导:非泛型 类型“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();
        }
    }

热点排行