Dict.CN 在线词典, 英语学习, 在线翻译
随笔-173  评论-140  文章-1  trackbacks-1
using System;
using System.Collections;
using System.Collections.Generic;
public class Stack<T> : IEnumerable<T>
{
    
//数组,索引
    T[] items;
    
int idx;
    
public Stack()
    
{
        idx 
= 0;
        items 
= new T[10];

    }

    
public void Push(T t)
    
{
        items[idx
++= t;
    }

    
public T Pop()
    

        
return items[--idx];
    }



    
public IEnumerator<T> GetEnumerator()
    
{
        
for (int i = items.Length - 1; i >= 0--i)
        
{
            
yield return items[i];
        }

    }


}

class App
{
    
static void Main()
    
{
        Stack
<int> stack = new Stack<int>();
        stack.Push(
100);
        stack.Push(
101);
        stack.Push(
103);
        stack.Push(
104);
        stack.Push(
105);
        stack.Push(
106);
        stack.Push(
107);
        stack.Push(
108);
        stack.Push(
109);
        stack.Push(
110);
        stack.Push(
111);
        stack.Push(
112);
        
foreach (int i in stack)
        
{
            Console.WriteLine(i.ToString());
        }

        Console.Read();

    }

}
提示错误:错误 1 “Stack<T>”不会实现接口成员“System.Collections.IEnumerable.GetEnumerator()”。“Stack<T>.GetEnumerator()”或者是静态、非公共的,或者有错误的返回类型。 C:\Documents and Settings\Administrator\My Documents\Visual Studio 2005\Projects\ConsoleApplication2\ConsoleApplication2\Program.cs 4 14 ConsoleApplication2
posted on 2008-04-06 21:47 Robot·H 阅读(57) 评论(2)  编辑 收藏 所属分类: C#2.0

评论:
#1楼 [楼主] 2008-04-07 15:12 | Robot·H      
请查看一下 IEnumerable<T> 的定义,如下
public interface IEnumerable<T> : IEnumerable

IEnumerable<T> 继承于 IEnumerable,IEnumerable 接口包含一个GetEnumerator() 方法,IEnumerable<T> 也包含一个该方法,不同之处在于后者的返回值是泛型。

如果两个接口的方法同名,就用到了 “显式接口”,你的错误就在于少了一个实现IEnumerable 接口方法的显式实现。

至于怎么实现,请在MSDN内输入“显式接口”四个字,有详细说明。
楼上给出了实现。

  回复  引用  查看    
#2楼 [楼主] 2008-04-07 15:12 | Robot·H      
System.Collections.IEnumerator System.Collections.IEnumerable.GetEnumerator()
{
for (int i = items.Length - 1; i >= 0; --i)
{
yield return items[i];
}
}

  回复  引用  查看    

标题  
姓名  
主页
Email (只有博主才能看到) 
验证码 *  看不清,换一张 [登录][注册]
内容(请不要发表任何与政治相关的内容)  
  登录  使用高级评论  新用户注册  返回页首  恢复上次提交      
 
另存  打印
 


Msn:glory_yimart@hotmail.com QQ:2839849 Emal:yimart at 163.com