第常用数据类型的用法_第1页
第常用数据类型的用法_第2页
第常用数据类型的用法_第3页
第常用数据类型的用法_第4页
第常用数据类型的用法_第5页
已阅读5页,还剩38页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

会计学1第常用数据类型的用法3.1字符串字符串比较方法string.Compare(strings1,strings2)

如果s1大于s2,结果为1;如果s1等于s2,结果为0;如果s1小于s2,结果为-1。string.Compare(strings1,strings2,boolignoreCase)ignoreCase确定是否区分大小写比较两个字符串是否相等,使用:Equals方法==第2页/共43页第1页/共43页3.1字符串

字符串查找Contains方法:用于查找一个字符串中是否包含指定的子字符串。语法为:

publicboolContains(stringvalue)

例如:stringstr1="thisisastring.";

boolb=str1.Contains("is");IndexOf方法:求某个字符或者子串在字符串中出现的位置。两种最常用的重载形式:

publicintIndexOf(strings)publicintIndexOf(strings,intstartIndex)LastIndexOf方法:LastIndexOf方法的用法与IndexOf方法相同,查找最后一次出现的位置。

第3页/共43页第2页/共43页3.1字符串例如:Console.WriteLine(str1.IndexOf("is"));//结果为2(注意序号从0开始)Console.WriteLine(str1.LastIndexOf("is"));//结果为5IndexOfAny方法:查找某个字符串中是否包含某些字符(多个不同的字符)。

常用语法:publicintIndexOfAny( char[]anyOf)

例如:strings1="123abc123abc123";char[]c={'a','b','5','8'};intx=s1.IndexOfAny(c);//x结果为3第4页/共43页第3页/共43页3.1字符串截取字符串

Substring(intstartIndex,intcount)截取字符串从startIndex位开始,截取长度为count的字符串例如:stringstr=“abc123”;stringss=str.Substring(1,4);Console.WriteLine(ss);//bc12

第5页/共43页第4页/共43页3.1字符串删除指定数量的字符Remove(intstartIndex,intcount)

例如:stringstr1="thisisastring.“Console.WriteLine(str1.Remove(1,2));//结果为tsisastring字符串替换Replace(stringoldStr,stringnewStr)例如:stringstr1="thisisastring.“Console.WriteLine(str1.Replace("is","xy"));//结果为thxyxyastring第6页/共43页第5页/共43页3.1字符串插入字符串

例如:strings1="abcdabcd";strings2=s1.Insert(2,"12");//结果为"ab12cdabcd“从字符串开头或结尾删除指定的字符:利用TrimStart删除字符串首部空格,利用TrimEnd删除字符串尾部空格,利用Trim删除字符串首部和尾部空格。例如:strings1="□□□□thisisabook";strings2="thatisapen□□□□";strings3="□□isapen□□";Console.WriteLine(s1.TrimStart());//删除首部空格Console.WriteLine(s2.TrimEnd());//删除尾部空格Console.WriteLine(s3.Trim());//删除首部和尾部空格第7页/共43页第6页/共43页3.1字符串字符串的合并与拆分Join方法:在数组的每个元素之间串联指定的分隔符,从而产生单个串联的字符串。语法为:

publicstaticstringJoin( stringseparator,string[]value)Split方法:将字符串按照指定的一个或多个字符进行分离,从而得到一个字符串数组。常用语法为:

publicstring[]Split(paramschar[]separator)第8页/共43页第7页/共43页字符串的合并和拆分举例例如:string[]sArray1={"123","456","abc"};strings1=string.Join(",",sArray1);//结果为"123,456,abc"string[]sArray2=s1.Split(',');//sArray2得到的结果与sArray1相同strings2="abc12;34,56";string[]sArray3=s2.Split(',',';','');//分隔符为逗号、分号、空格Console.WriteLine(string.Join(Environment.NewLine,sArray3));输出结果:abc123456第9页/共43页第8页/共43页3.1字符串ToUpper大写ToLower小写例如:strings1="Thisisastring";strings2=s1.ToUpper();//s2结果为THISISASTRINGstrings3=Console.ReadLine();if(s3.ToLower()=="yes"){Console.WriteLine("OK");}第10页/共43页第9页/共43页3.2String和StringBuilderString类实际上表示的是一系列不可变的字符。说其实例是“不可变的”,是因为无法直接修改给该字符串分配的堆中的字符串。例如,在myString的后面接上另一个字符串:myString+="andabitmore";其实际操作并不是在原来myString所占内存空间的后面直接附加上第二个字符串,而是返回一个新String实例,即重新为新字符串分配内存空间。StringBuilder类位于System.Text名称空间下,使用StringBuilder类每次重新生成新字符串时不是再生成一个新实例,而是直接在原来字符串占用的内存空间上进行处理,而且它可以动态的分配占用的内存空间大小。第11页/共43页第10页/共43页StringBuilder类用法举例【例3-1】StringBuilder类的基本用法。usingSystem;usingSystem.Text;namespaceStringBuilderExample{classProgram{publicstaticvoidMain(){StringBuildersb=newStringBuilder();sb.Append("string1");sb.AppendLine("string2");sb.Append("string3");strings=sb.ToString();Console.WriteLine(s);Console.ReadLine();}}}第12页/共43页第11页/共43页3.3数组

数组用于存储同一种类型的数据。数组是一种引用类型,而不是值类型。数组是按照数组名、数据元素的类型和维数来描述的。C#中可以有一维数组、多维数组、交错数组。1.数组的声明与初始化声明数组时,既可以一开始就指定数组元素的个数,也可以一开始不指定元素个数,而是在使用数组元素前动态地指定元素个数。例如:int[]a=newint[30];string[]mystring={"first","second","third"};第13页/共43页第12页/共43页数组的声明语法举例

数组类型语法例子一维数组数据类型[]数组变量;int[]myArray;二维数组数据类型[,]数组变量;int[,]myArray;三维数组数据类型[,,]数组变量;int[,,]myArray;交错数组数据类型[][]数组变量;int[][]myArray;第14页/共43页第13页/共43页数组的秩与数组长度2.数组的秩与数组长度数组的秩(rank)是指数组的维数,例如一维数组秩为1,二维数组秩为2。数组长度是指数组中所有元素的个数。例如:int[]a=newint[10];//数组长度为10int[,]b=newint[3,5];//数组长度为3*5=15,其中第0维长度为3,第1维长度为5第15页/共43页第14页/共43页数组用法举例【例3-2】编写一个控制台应用程序,定义一个二维数组,分别输出数组的秩、数组长度以及数组中的每个元素值。第16页/共43页第15页/共43页数组3.一维数组在C#中,数组的下标默认是从0开始索引的。Length属性表示数组的长度。4.多维数组多维数组指维数大于1的数组,常用的是二维数组和三维数组。C#语言支持两种类型的二维数组,一种是二维矩形数组,另一种是二维交错数组。对于二维矩形数组,数组中的每一行都有相同的列数。例如:int[,]n2=newint[,]{{1,2},{3,4},{5,6}};第17页/共43页第16页/共43页数组5.交错数组交错数组相当于一维数组的每一个元素又是一个数组,也可以把交错数组称为“数组的数组”。例如:int[][]n1=newint[2][]{newint[]{2,4,6},newint[]{1,3,5,7,9}};交错数组的每一个元素既可以是一维数组,也可以是多维数组。第18页/共43页第17页/共43页交错数组用法举例【例3-3】交错数组的用法。第19页/共43页第18页/共43页数组6.动态改变数组的大小Resize方法

publicstaticvoidResize<T>(refT[]array,intnewSize)这是一种泛型表示形式。其中T表示数组类型,array为要调整大小的一维数组,该数组从零开始;如果为null则新建具有指定大小的数组。如果newSize大于旧数组的Length,则分配一个新数组,并将所有元素从旧数组复制到新数组。如果newSize小于旧数组的Length,则分配一个新数组,并将元素从旧数组复制到新数组直到新数组被填满为止;旧数组中的剩余元素将被忽略。如果

newSize与旧数组的

Length相等,则此方法不执行任何操作。第20页/共43页第19页/共43页动态改变数组的大小举例【例3-4】演示如何动态改变一维数组的大小。第21页/共43页第20页/共43页数组7.数组元素的排序与查找C#语言中还提供了Sort和Reverse这样的静态方法,这些方法用快速排序算法将一维数组中的元素按照升序或降序排列。还可以方便地查找指定的元素。例如Contains方法和IndexOf方法等。第22页/共43页第21页/共43页数组排序和查找举例【例3-5】一维数组的排序和查找。第23页/共43页第22页/共43页数组的统计以及数组和字符串间的转换利用数组的Average方法、Sum方法、Max方法和Min方法可以求数组中所有元素的平均值、求所有元素的和、最大值和最小值。对于字符串数组,可以直接利用字符串的Join方法和Split方法实现字符串和字符串数组之间的转换。第24页/共43页第23页/共43页数组元素统计和字符串转换举例【例3-6】演示如何统计数组中的元素以及如何实现数组和字符串之间的转换。第25页/共43页第24页/共43页3.3枚举枚举(enum)是一组命名常量的集合,称为枚举成员列表。它可以为一组在逻辑上密不可分的整数值提供便于记忆的符号,从而使代码更清晰,也易于维护。声明enum类型变量的语法为:

[附加声明][访问修饰符]enum名称[:数据类型]{枚举列表}

例如:enumdays{Mon,Tue,Wed,Thu,Fri,Sat}

注意:enumdays:byte{X1=255,X2}//错误第26页/共43页第25页/共43页3.4泛型泛型(Generic)是具有占位符(类型参数)的类、结构、接口和方法,它与普通类的区别是泛型多了一个或多个表示类型的占位符,这些占位符用尖括号括起来。例如:publicclassMyClass<T>{publicTMyProp{get;set;}//定义属性MyProppublicvoidPrint(){Console.WriteLine(MyProp);}}第27页/共43页第26页/共43页泛型【例3-8】演示泛型的定义与用法。第28页/共43页第27页/共43页可空泛型可空类型是泛型结构Nullable<T>的实例。

例如,Nullable<Int32>读作“可以为null的Int32”,可以将其赋值为任一个32位整数值,也可以将其赋值为null值。可空类型具有以下特性:(1)可空类型表示可被赋值为null值的值类型变量。但是要注意,由于引用类型已支持null值,因此不能用该类型创建基于引用类型的null类型。(2)语法“T?”是泛型“Nullable<T>”的简写,此处的T为值类型。这两种形式可以互换。如Nullable<int>也可以写为int?。(3)程序员可以使用泛型的HasValue和Value只读属性测试是否为空和检索值,如果此变量包含值,则HasValue属性返回True;如果此变量的值为空,则返回False。第29页/共43页第28页/共43页3.5泛型集合在System.Collections.Generic命名空间下,提供了常用的泛型集合类。泛型集合类非泛型集合类泛型集合用法举例List<T>ArrayListList<string>dinosaurs=newList<string>();Dictionary<TKey,Tvalue>HashtableDictionary<string,string>d=newDictionary<string,string>();

d.Add("txt","notepad.exe");Queue<T>QueueQueue<string>q=newQueue<string>();

q.Enqueue("one");Stack<T>StackStack<string>s=newStack<string>();

s.Push("one");

s.Pop();SortedList<TKey,TValue>SortedListSortedList<string,string>list=newSortedList<string,string>();

list.Add("txt","notepad.exe");

list.TryGetValue("tif",outvalue))第30页/共43页第29页/共43页哈希集合HashSetHashSet<T>泛型类提供了高性能的数学集合运算,一个HashSet<T>对象的容量是指该对象可以容纳的元素个数。常用方法:UnionWith方法:并集或Set加法IntersectWith方法:交叉ExceptWith方法:set减法SymmetricExceptWith方法:余集第31页/共43页第30页/共43页列表和排序列表List<T>泛型类表示可通过索引访问的强类型对象列表,该类提供了对列表进行搜索、排序和操作的方法。常用方法如下:Add方法:将指定值的元素添加到列表中。Insert方法:在列表的中间插入一个新元素。Contains方法:测试该列表中是否存在某个元素。Remove方法:从列表中移除带有指定键的元素。Clear方法:移除列表中的所有元素。SortedList<T>排序列表,用法与List<T>类似。第32页/共43页第31页/共43页列表和排序列表举例【例3-9】演示泛型列表的定义与用法。第33页/共43页第32页/共43页链表LinkedList<T>为双向链表。LinkedList<T>对象中的每个节点都属于LinkedListNode<T>类型。每个节点又指向其Next节点和Previous节点。LinkedList<T>接受

null引用作为引用类型的有效Value属性,并且允许重复值。如果LinkedList<T>为空,则First和Last属性为null。第34页/共43页第33页/共43页字典和排序字典Dictionary<TKey,TValue>泛型类提供了从一组键到一组值的映射。字典中的每个添加项都由一个值及其相关联的键组成,通过键来检索值。该泛型类提供的常用方法如下。Add方法:将带有指定键和值的元素添加到字典中。TryGetValue方法:获取与指定的键相关联的值。ContainsKey方法:确定字典中是否包含指定的键。Remove方法:从字典中移除带有指定键的元素。第35页/共43页第34页/共43页队列Queue<T>泛型类表示对象的先进先出集合。队列在按接收顺序存储消息方面非常有用,存储在队列中的对象在一端插入,从另一端移除。队列可以保存null值并且允许有重复的元素。常用方法如下:Enqueue方法:将指定元素插入列尾。Dequeue方法:队列首元素出列。第36页/共43页第35页/共43页堆栈Stack<T>泛型类表示同类型实例的大小可变的后进先出(LIFO)集合。堆栈可以保存null值并且允许有重复值。常用方法如下:Push方法:将指定元素插入栈顶。Pop方法:弹出栈顶元素。第37页/共43页第36页/共43页3.6日期与时间处理对日期和时间处理的常用类是DateTime类和TimeSpan类。DateTime类表示范围在0001年1月1日午夜12:00:00到9999年12月31日晚上11:59:59之间的日期和时间,最小时间单位等于100纳秒。TimeSpan类表示一个时间间隔。其范围在Int64.MinValue到Int64.MaxValue之间。第38页/共43页第37页/共43页3.6日期与时间处理举例【例3-10】DateTime类的用法举例。【例3-11】显示当前日期和时间。第39页/共43页第38页/共43页3.7数学运算Math类位于System命名空间下,为三角函数、对数函数和其他通用数学函数提供常数和静态方法。例如:

int

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论