SUNWEN教程之----C#进阶10

教程

SUNWEN教程之----C#进阶
(十)
mrfat@china.com  
大家好,我是SUNWEN.今天下午得知,晚上要去当"更夫".呵呵,我们这个学校很是奇怪,要叫我们轮流去通宵巡逻,从晚上10:30到早上6:00.我有一个物理系的朋友,上次在田家炳楼门前找了一个宣传板,垫在下面就睡了一觉,听了笑死我了!哈哈!

现在我想说的是C#中的容器.这是一个非常重要的话题,因为不管你写什么样的程序,你都不能不与容器打交道.什么是容器呢(倒!).容器就是可以容纳东西的东西(再倒!),在C#和JAVA这种面向对象的编程语言中,容器就被称为可以容纳对象的东东,不是说"一切都是对象吗?"以前,我一个搞C++的程序员朋友告诉我,JAVA中的容器太好用了,比C++好用多了.而作为JAVA的后来者的C#毫无疑问,它的容器功能肯定也是很强大的.

foreach语句是遍历容器的元素的最简单的方法.我们可以用System.Collections.IEnumerator类和System.Collections.IEnumerable接口来使用C#中的容器,下面有一个例子,功能是字符串分割器.

000: // CollectionClasses\tokens.cs
001: using System;
002: using System.Collections;
003:
004: public class Tokens : IEnumerable
005: {
006:    private string[] elements;
007:
008:    Tokens(string source, char[] delimiters)
009:    {
010:       elements = source.Split(delimiters);
011:    }
012:
013:    //引用IEnumerable接口014:
015:    public IEnumerator GetEnumerator()
016:    {
017:       return new TokenEnumerator(this);
018:    }
019:
020:    
021:
022:    private class TokenEnumerator : IEnumerator
023:    {   
024:       private int position = -1;
025:       private Tokens t;
026:
027:       public TokenEnumerator(Tokens t)
028:       {
029:          this.t = t;
030:       }
031:
032:       public bool MoveNext()
033:       {
034:          if (position < t.elements.Length - 1)
035:          {
036:             position++;
037:             return true;
038:          }
039:          else
040:          {
041:             return false;
042:          }
043:       }
044:
045:       public void Reset()
046:       {
047:          position = -1;
048:       }
049:
050:       public object Current
051:       {
052:          get
053:          {
054:             return t.elements[position];
055:          }
056:       }
057:    }
058:
059:    // 测试060:
061:    static void Main()
062:    {
063:       Tokens f = new Tokens("This is a well-done program.", new char[] {' ','-'});
064:       foreach (string item in f)
065:       {
066:          Console.WriteLine(item);
067:       }
068:    }
069: }
这个例子的输出是:
This
is
a
well
done
program.
好了,这一节就说到这了.现在环境不太好,旁边一大帮同学在看VCD,不好搞.
下一页

时间: 2024-09-27 11:50:43

SUNWEN教程之----C#进阶10的相关文章

SUNWEN教程之----C#进阶3

教程 SUNWEN教程之----C#进阶(三)mrfat@china.com  终于又到一个白天了,起床,伸个懒腰,又坐到了电脑前面.今天我要向大家讲的是C#的数组(Arrays).C#中的数组和其它一些优秀的语言一样,也是从0开始计的,这从我们以前的例子里可以看出来,也就是说,一个数组的第一个元素是a[0],而不是像VB的a(1).虽然是这样,但是你还是要注意一些区别. 在声明一个数组的时候,方括号必须跟在类型后面,而不能跟在变量名后面,如:int[] table; //不能写成int tab

SUNWEN教程之----C#进阶5

教程 SUNWEN教程之----C#进阶(五)mrfat@china.com  大家好,我是武汉华师的SUNWEN.我回来了.现在是五月二号下午3:20.我刚从电脑城回来,买了一版D版的MP3.呜,湖北的同学都回去了,尤其是武汉的,跑得特别快,真是可恨.剩下我一个孤零零的福建佬,没事做,只好一个人听音乐,真是惨!幸好这音乐还比较好听,呵呵,其实SUNWEN一点音乐细胞也没有. 言归正传,我现在要说的是库(libraries),和大家一起学习如何用C#建立一个DLL文件.说起DLL,肯定是无人不知

SUNWEN教程之----C#进阶9

教程 SUNWEN教程之----C#进阶(九)mrfat@china.com  大家好,我是SUNWEN,现在是五月四号23:15,再过十五分钟就要熄灯了.所以要抓紧时间,先开个头,明天继续. 现在我要说的是C#中的用户自定义转换(User-Defined Conversions),其中用到了前面说的struct的知识,就是结构呀,忘了吗?好,没忘就好.从我们以下的课程我们可以看到结构的用处(刚才我还在想它有什么用,呵呵).用class声明的是一个类,而用struct声明的可以看作是一个类型,对

SUNWEN教程之----C#进阶2

教程 SUNWEN教程之----C#进阶(二)mrfat@china.com  好了,I COME BACK,下面的代码显示了我们如何打印多个参数: 000: // CommandLine\cmdline1.cs001: using System;002:003: public class CommandLine004: {005:     public static void Main(string[] args)006:     {007:         Console.WriteLine

SUNWEN教程之----C#进阶1

教程 SUNWEN教程之----C#进阶(零)mrfat@china.com  写在前面的话 在写这些文章之前,我对C#一无所知.只从前辈那里听说了一些,说他很像JAVA.因为我这段时间一直在看JAVA,结果什么明堂没看出来(只能怪我太笨:),其实我想还是没有实践的机会),所以就很想换换口味.其实很早就听说了C#,想看一看这个东东,只是上M$的网站一看,.NET的东东要一百多兆呢!看了就怕,何况全部下载下来,要费我一整张电话卡呢?幸好我一个朋友先把.NET下载下来了,我拿了硬盘就跑过去拷过来了.

SUNWEN教程之----C#进阶6

教程 SUNWEN教程之----C#进阶(六)mrfat@china.com  大家好,我是武汉华师的SUNWEN.现在是五月二号晚上19:27,由于闲着没事干,所有又写起来了.昨天照了十几张相,待会可以去取了,不知照片中的我是不是很帅,呵呵!现在我耳边正听着2000欧洲杯的曲子,所以比较激动.唉,身为我们院2000级足球队长的我,已经很久没有踢球了! 现在我要说的是C#中的版本处理.其实这是任何一个软件必须要考虑的问题.每个软件都不只一个版本(除了我写的以外),因此版本处理显得非常地重要.JA

SUNWEN教程之----C#进阶11

教程 SUNWEN教程之----C#进阶(十一)mrfat@china.com  OK,我又回来了,前面写了那么多,跟JAVA的对比也够多了,现在我就用我自己试验的例子,来看一看C#这个被称为JAVA#的新一代编程语言到底与JAVA有多大的区别. 首先我们建立一个C#的程序文件cs1.cs,然后再建立一个JAVA的源程序文件cs1.java.它们的内容分别是: cs1.cs: using System;public class cs1{    public static void Main(){

SUNWEN教程之----C#进阶4

教程 SUNWEN教程之----C#进阶(四)mrfat@china.com  大家好,我是武汉华师的SUNWEN.呵呵,下午好不容易有了时间出去玩了,到了归元寺.门票十元,不算贵,SUNWEN照了好多像,用不了多久,就可以让大家看一看了. 闲话少说,让我们进入正题.这次我要向大家讲的是C#中的属性.属性是什么呢,比如说我是男的,男就是我的一人属性.我是一个大一的学生,大一也是我的一个属性.属性就是一个对象的性质.很简单吧,呵呵!下面,我给出两个例子,第一个例子出明了如何声明一个可以修改的属性,

SUNWEN教程之----C#进阶8

教程 SUNWEN教程之----C#进阶(八)mrfat@china.com  大家好,我是武汉华师的SUNWEN,今天Zzz....(快醒醒!啪!..啪!倒,叫我起来也不要用皮鞋来打嘛@#$%&*).现在是五月四号晚上19:33,我好想睡觉.只好打开音乐来提神了! 这一节我要讲的是大家非常关心的,肯定也是非常感兴趣的部分.嘿嘿,也是我写教程最拿手的部分----ADO数据库访问.想到这,我就想起我在去年写的"访问数据库"系列文章,嘿嘿!所以呢,如果你觉得对记录集之类的东西比较难