读书人

一个集合接口的有关问题

发布时间: 2012-10-29 10:03:53 作者: rapoo

一个集合接口的问题
using System;
using System.Collections;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace collection_interface
{
public class listboxtest : IEnumerable<String>为什么这里没有声名ienumerator接口。该接口为什么叫实现式接口呢? {
private string[] strings;
private int ctr = 0;
public IEnumerator<string> GetEnumerator()
{
foreach (string s in strings)
{
yield return s;
}
}
IEnumerator IEnumerable.GetEnumerator()
{
return GetEnumerator();
}
public listboxtest(params string[] initialstrings)
{
strings = new String[8];
foreach (string s in initialstrings)
{
strings[ctr++] = s;
}
}
public void add(string thestring)
{
strings[ctr] = thestring;
ctr++;
}
public string this[int index]
{
get
{
if (index < 0 || index >= strings.Length)
{

}
return strings[index];
}
set
{
strings[index] = value;

}
}
public int getnumentries()
{
return ctr;
}
}

class Program
{
static void Main(string[] args)
{
listboxtest lbt = new listboxtest("hello", "world");
lbt.add("who");
lbt.add("is");
lbt.add("douglas");
lbt.add("adams");
string subst = "universe";
lbt[1] = subst;
foreach (string s in lbt)
{
Console.WriteLine("value:{0}", s);
}
}
}
}


[解决办法]
如果你说的是现实yield return,那只是GetEnumerator函数返回的一个接口
[解决办法]

探讨

引用:
IEnumerable是一个声明式的接口,他只是声明该对象是可迭代的,具体怎么迭代他并没有做,而是调用了IEnumerator(IEnumerable.GetEnumerator());

IEnumerator才是实现式的接口,具体怎么迭代是这里做的。
能不能说明下什么叫声明式接口什么是实现式接口呢?

读书人网 >C#

热点推荐