Visual C# 第4章

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

第4章数组与字符串——VisualC#.NET程序设计与开发主要内容几种数组的定义以及使用字符串的定义以及使用4.1一维数组在C#中,声明一维数组的语法是在类型后面放一对空的方括号,如下所示:int[]numbers;数组在被访问之前必须初始化,初始化有2种方式。可以由字面形式指定数组的完整内容,也可以先直接指定数组的大小,再使用关键字new初始化所有的数组元素。声明以及初始化数组int[]numbers={1,2,3,4,5};int[]numbers=newint[5]{1,2,3,4,5};当然,我们也可以使用已经赋值的变量来进行初始化,例如:inta=3;int[]numbers=newint[a];数组的下标是从0开始,所以上面那行所定义的数组包含以下3个元素:元素numbers[0],元素numbers[1]以及元素numbers[2]。一个关于数组使用的小例子例4.1定义一个字符串数组将几个球员的姓名输入这个数组,并且把他们逆序输出来。程序代码usingSystem.Collections.Generic;usingSystem.Text;namespaceExample1Of4{classProgram{staticvoidMain(string[]args){Console.WriteLine(请输入球员个数:);intplayerNo=int.Parse(Console.ReadLine());string[]names=newstring[playerNo];for(inti=0;inames.Length;i++){Console.WriteLine(请输入第{0}个球员的名字,i+1);names[i]=Console.ReadLine();}Console.WriteLine(你输入的球员名字分别是:);for(inti=0;inames.Length;i++){Console.WriteLine(names[i]);}Console.ReadLine();}}}运行结果4.2多维数组与交错数组上面只是定义了一维数组,还可以定义多维数组,语法是在方括号内加逗号。如下所示,定义了一个二维数组:int[,]numbers;多维数组的初始化与一维数组的初始化很类似,若集体赋值,则要遵循行先序的原则,这些跟其他语言很类似。int[,]numbers=newint[2,2]{1,2,3,4};这样,就是相当于这样给数组赋值:numbers[0,0]=1;numbers[0,1]=2;numbers[1,0]=3;numbers[1,1]=4;上面的代码也可以写为:int[,]numbers=newint[2,2]{{1,2},{3,4}};交错数组在C#中,我们还可以定义一种特殊的数组,数组中的每一行可以不相同,这种数组我们称之为交错数组(JaggedArray)。交错数组的定义例子:int[][]numbers=newint[3][];numbers[0]=newint[2]{1,2};numbers[1]=newint[3]{2,3,4};numbers[2]=newint[2]{6,7};对上面声明的交错数组赋值可以为:numbers[1][1]=6;4.3ArrayList类.NET框架提供了一个ArrayList类。用于建立可变长度的数组,这种数组的数据类型为Object,在数组元素中允许存放任何类型的数据。ArrayList类包含在System.Collections命名空间中,要在程序的开头添加System.Collections命名空间,才可以使用较简洁的对象名称建立ArrayList对象类。ArrayLis类的方法和属性ArrayList类是一种可以按需动态增长的数组。它提供了许多用于操作有用方法和属性。4.4HashTable在.NETFramework中,HashTable是System.Collections命名空间提供的一个容器,用于处理和表现类似key/value的键值对,这些键/值对根据键的哈希代码进行组织。其中key通常可用来快速查找,同时key是区分大小写的;value用于存储对应于key的值。HashTable概述HashTable中key/value键值对均为Object类型,所以HashTable可以支持任何类型的key/value键值对。HashTable是C#中一个较为复杂的类型,其构造函数就有10几种,这里我们只讲解2种最简单的构造函数来供读者参考:HashTable()HashTable(Int32)第1种构造函数使用默认的参数来初始化HashTable类的新的空实例。类似于ArrayList对象,其容量可以根据实际的需要自动添加。第2种构造函数使用指定的容量来初始化HashTable类的新的实例。这里我们指定的容量只是初步判断的容量,可以在后来的使用过程中根据实际需求进行修改。下面的代码是创建HashTable的新实例:HashTableht1=newHashTable();HashTableht2=newHashTable(15);HashTable的简单操作类似于前面我们对数组的操作,我们可以对哈希表进行元素的添加、删除、查找等操作,下面具体讲解一下:在哈希表中添加一个key/value键值对:HashtableObject.Add(key,value);在哈希表中去除某个key/value键值对:HashtableObject.Remove(key);从哈希表中移除所有元素:HashtableObject.Clear();判断哈希表是否包含特定键key:HashtableObject.Contains(key);一个关于HashTable操作的例子usingSystem;usingSystem.Collections;//使用Hashtable时,必须引入这个命名空间classhashtable{publicstaticvoidMain(){Hashtableht=newHashtable();//创建一个Hashtable实例ht.Add(E,e);//添加key/value键值对ht.Add(A,a);ht.Add(C,c);ht.Add(B,b);strings=(string)ht[A];if(ht.Contains(E))//判断哈希表是否包含特定键,其返回值为true或falseConsole.WriteLine(theEkey:exist);ht.Remove(C);//移除一个key/value键值对Console.WriteLine(ht[A]);//此处输出aht.Clear();//移除所有元素Console.WriteLine(ht[A]);//此处将不会有任何输出}}遍历HashTableC#中提供了Foreach语句以对HashTable进行遍历。由于HashTable的元素是一个键/值对,因此需要使用DictionaryEntry类型来进行遍历。DictionaryEntry类型在此处表示一个键/值对的集合。下面的代码则可以实现对HashTable中的元素进行遍历:foreach(DictionaryEntrydeinht)//ht为一个Hashtable实例{Console.WriteLine(de.Key);//de.Key对应于key/value键值对keyConsole.WriteLine(de.Value);//de.Key对应于key/value键值对value}对HashTable进行排序对哈希表进行排序在这里的定义是对key/value键值对中的key按一定规则重新排列,但是实际上这个定义是不能实现的,因为我们无法直接在Hashtable进行对key进行重新排列,如果需要Hashtable提供某种规则的输出,可以采用一种变通的做法:ArrayListakeys=newArrayList(ht.Keys);//别忘了导入System.Collectionsakeys.Sort();//按字母顺序进行排序for(stringskeyinakeys){Console.Write(skey+:);Console.WriteLine(ht[skey]);//排序后输出}4.5字符与字符串C#内置支持功能完全的string类型。更重要的是,C#把字符串也当成对象,封装了所有字符串所拥有的操作、排序和搜索方法。复杂的字符串处理模式匹配要依靠正则表达式的帮助。C#将正则表达式语法的强大与复杂同完全的面向对象设计结合起来了。4.5.1字符串的声明和初始化定义字符串最基本的方式是把一个双引号括起来的字符串赋给一个string类型的变量:strings=abcdef;字符串的声明和初始化双引号括起来的字符串可以包含转义字符,如“\n”或“\t”,都以反斜线开始,用来表示换行或制表。由于反斜线本身在一些命令行语法(如URL或者目录路径)中会用到,引号括起的字符串中,反斜线必须在其自身前面再加一个反斜线。如下面代码所示:stringdirectory=C:\\text;字符串的声明和初始化字符串也可以用原样的字符串字面值创建,以“@”符号开头。这样string构造方法就知道字符串应照原样使用,即使它要跨行或者含有转义字符。在原样字符串字面值中,反斜线和字符串可以简单地看成是多余的字符。因此,上面的程序代码stringdirectory=C:\\;也可以改写成如下的代码:stringdirectory=@C:\text;4.5.2字符串的处理string类型变量可以看作是char变量的只读数组。这样,就可以使用下面的语法访问每个字符:stringmyString=abcdef;charmyChar=myString[1];同时,我们还可以使用ToCharArray()函数,把string类型的变量转存到字符数组里面了。一个string转化为字符数组的例子例把一个string变量的所有值存放到一个字符数组里面去。程序代码:usingSystem;usingSystem.Collections.Generic;usingSystem.Text;namespacestringExample{classProgram{staticvoidMain(string[]args){strings=abcdef;char[]myChar=s.ToCharArray();Console.WriteLine(字符数组myChar输出如下:);foreach(charcinmyChar){Console.WriteLine({0},c);}Console.ReadLine();}}}程序运行结果字符串的拼接字符串的串接(合并)是指使用“+”符号连接前后两个字符串:stringcity=南京市;stringstreet=新街口;stringaddress=city+street;Console.WriteLine(“地址是:”+address);上述代码的输出结果为:“地址是:南京市新街口”。String类的方法和属性String类有很多方法和属性,常见的有:Length属性、ToUpper/ToLower方法、IndexOf方法、SubString方法等。Length属性介绍Length属性是描述字符串长度的属性stringstr2=”youarewelcome!”;intn=str2.Length;那么n就得到str2字符串的长度ToUpper/ToLower方法介绍ToUpper()方法是把字符串中所有的字母都变成大写ToLower()方法是把字符串中所有的字母都变成小写IndexOf方法介绍IndexOf()方法是

1 / 32
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功