请专注于学习

最近是比较忙,学生会要举办歌手大赛,还要出书,我要帮忙排版,修改 但是不能为自己找借口:没有时间读书!c#中多种特性,重载,多态,委托,事件,还是没有弄明白,特别是委托,事件,是如何实现,它的基本原则是什么?还 得下去深入研究! 今天,特别郁闷的是上课需要用java写两个算法,我挤尽脑汁,还没有调试出来,题目很简单,今天下课后继续实现!
呵呵,本来要去这本书的网站的去下载,可惜咯没能下载到,在这里找到了源代码,感谢这位hier
在程序源代码中,首先定义了两个数组,分别用来存放电话号码和人名,利用 public int this[int index]声明第一个索引,实现类似数组方式的电话号码查询,再接着利用 public int this[string indexName]声明第二个索引,完成从人名到电话号码的查询,加入了一个只读属性,TotalNums在这里仅仅用于演示,主程序Main()中, 首先完成电话列表初始化工作,然后录入数据,最后读出数据并显示。程序的源代码如下:

[cce_cs]
using System;
//索引比数组强的地方在于找集合中的元素不一定非要用下标,
//找电话号码不需要知道它排在号码簿里的位置[下标],只要用"名字"查询就行了
namespace project1
    {
        public class TelephoneList         //创建类
        {
            private int[] teleNums;           //定义整型数组,用来存放电话号码
            private string[] teleNames;       //定义字符型数组,用来存放电话号码

            public TelephoneList(params string[] aNames)          //params表参量参数,对付不确定长度数组的
            {
                teleNames = aNames;                                                       //将参量参数传给字符数组,
                teleNums = new int[aNames.Length];                  //以参量参数的个数进行整型数组实例化,
                for (int i = 0; i < aNames.Length; i++)                 //循环进行将初始化,赋值为0
                {
                    teleNums[i] = 0;
                }
            }

            public int this[int index]                            //索引1的声明(索引和属性的样子很像多个this[**])
            {
                get
                {
                    if (index >= 0 && index < teleNums.Length) //对索引进行判断
                    {
                        return teleNums[index];
                    }
                    else
                    {
                        Console.WriteLine("引入了错误的索引!");
                        return -1;
                    }
                }
                set
                {
                    if (index >= 0 && index < teleNums.Length)
                    {
                        teleNums[index] = value;
                    }
                    else
                    {
                        Console.WriteLine("引入了错误的索引!");
                    }
                }
            }

            public int this[string indexName]                   //索引2的声明
            {
                get
                {
                    return this[NameToIndex(indexName)];
                }
                set
                {
                    this[NameToIndex(indexName)] = value;
                }
            }

            private int NameToIndex(string indexName)//利用名字进行索引
            {
                for (int i = 0; i < teleNames.Length; i++)
                {
                    if (teleNames[i] == indexName)
                        return i;
                }
                Console.WriteLine("没有发现这个名字!");
                return -1;
            }

            public int TotalNums
            {
                get
                {
                    int sum = 0;
                    foreach (int num in teleNums) //将所有号码进行相加 在这里没什么意义
                    {
                        sum += num;
                    }
                    return sum;
                }//只读属性,不要set
            }

        }

        class Program
        {
            static void Main(string[] args)
            {
                TelephoneList myTeleList = new TelephoneList("LiuY", "Duanl", "LuoB");
                //实例化TelephoneList,将"LiuY", "Duanl", "LuoB"分别初始化到字符数组teleNames
                //
                myTeleList[0] = 4856212;            //使用整型索引1,写入
                myTeleList["Duanl"] = 5485488;      //使用字符索引2,写入
                myTeleList[2] = 1596561;            //使用整型索引1,写入

                Console.WriteLine("电话列表中,LiuY对应的号码是:{0}", myTeleList["LiuY"]); //使用索引2,读取
                Console.WriteLine("电话列表中,Duanl对应的号码是:{0}", myTeleList[1]);   //使用索引1,读取
                Console.WriteLine("电话列表中,LuoB对应的号码是:{0}", myTeleList["LuoB"]);//使用索引2,读取
                Console.WriteLine("电话的号码数值总和是:{0}", myTeleList.TotalNums);     //使用只读属性

                Console.WriteLine("按Enter键退出!");
                Console.Read();

            }
        }
    }
[/cce_cs]

发表评论

电子邮件地址不会被公开。 必填项已用*标注