dotnet02C#程序设计基础.ppt
《dotnet02C#程序设计基础.ppt》由会员分享,可在线阅读,更多相关《dotnet02C#程序设计基础.ppt(31页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第二章C程序设计基础第一个第一个C#程序程序Hello,World!n创建控制台应用程序创建控制台应用程序n完整对象路径命名空间名完整对象路径命名空间名.类名类名n例如,如何访问类?例如,如何访问类?System.Text.StringBuilderusingSystem.Text;nConsole.WriteLine(“Hello,World!”);n调试运行调试运行F5,非调试运行非调试运行CtrlF5(忽略断点)(忽略断点)nCTS(CommonTypeSystem)是一个所有)是一个所有.NET语言都支持的语言都支持的数据数据类型类型(或者说中间语言(或者说中间语言(IL)中使用的预定
2、义数据类型)的)中使用的预定义数据类型)的集合集合,确,确保这些语言可以相互传送数据,体现了保这些语言可以相互传送数据,体现了.NET语言的互操作性。语言的互操作性。n值类型值类型直接存储其值,存储在直接存储其值,存储在堆栈堆栈Stack中;而中;而引用类型引用类型存储存储对其值对其值的内存地址的引用的内存地址的引用,存储在运行库托管,存储在运行库托管堆堆heap中。中。n我们必须在设计类型的时候就决定类型实例的行为。这种决定非常重我们必须在设计类型的时候就决定类型实例的行为。这种决定非常重要,用要,用CLRviaC#作者作者JeffreyRichter的话的话来说,来说,“不理解引用不理解引
3、用类型和值类型区别的程序员将会给代码引入诡异的类型和值类型区别的程序员将会给代码引入诡异的bug和性能问题和性能问题(Ibelievethatadeveloperwhomisunderstandsthedifferencebetweenreferencetypesandvaluetypeswillintroducesubtlebugsandperformanceissuesintotheircode.)”。这就要求我。这就要求我们正确理解和使用值类型和引用类型。们正确理解和使用值类型和引用类型。n关于正确理解和使用值类型和引用类型,参见关于正确理解和使用值类型和引用类型,参见C的值类型和引用类
4、型的值类型和引用类型n具体的值类型和引用类型见课本具体的值类型和引用类型见课本P31P38nC数据类型不过是数据类型不过是CTS类型的别名而已。类型的别名而已。n如,如,int只不过是只不过是System.Int32的马甲(别名)的马甲(别名)而已而已n即即inti;可以用可以用System.Int32i;代替代替nFrameworkDesignGuidelines一书中说:我们要一书中说:我们要避免在标志符中使用语言特有的名字(别名)避免在标志符中使用语言特有的名字(别名)来称呼它们。来称呼它们。因为别名没有增加任何价值,反而引起了大量的混淆。因为别名没有增加任何价值,反而引起了大量的混淆。
5、n所以,常用的所以,常用的Convert.ToInt32()而不是而不是ToInt(),Convert.ToInt64()而不是而不是ToLong()。C#的命名规范的命名规范n参见参见http:/ intj=(int)o;/unboxingn拆箱拆箱装箱的逆过程,需显式转换装箱的逆过程,需显式转换n如果应用程序频繁地把值类型变量作为对象处理,最好最初使用引用如果应用程序频繁地把值类型变量作为对象处理,最好最初使用引用类型声明。类型声明。类型转换类型转换n隐式转换隐式转换编译器自动进行编译器自动进行bytebData=20;intiCount=bData;intiCount=20;bytebD
6、ata=iCount;编译通过编译通过报错,为什么?报错,为什么?n显式转换显式转换上面的错误怎么修改才能编译通过?上面的错误怎么修改才能编译通过?intiCount=20;bytebData=(byte)iCount;但是,显示转换时可能会发生截断或溢出。但是,显示转换时可能会发生截断或溢出。n强制转换强制转换数值字符串数值字符串数值,如,数值,如,”123”123nConvert类:类:将一个基本数据类型转换为另一个基本数据类型将一个基本数据类型转换为另一个基本数据类型stringstr=123;inti=Convert.ToInt32(str);Console.WriteLine(“In
7、t32:0”,i);nParse方法方法:将数字的字符串表示形式转换为它的等效将数字的字符串表示形式转换为它的等效32位有符号整数。一个指示操作是否成功的返回值。位有符号整数。一个指示操作是否成功的返回值。stringstr=123;Int32int32Val;Int32.TryParse(str,outint32Val);Console.WriteLine(Int32:0,int32Val);数值数值数值字符串,如,数值字符串,如,123”123”nConvert.ToString()方法方法n各数值类型的各数值类型的ToString()方法方法nStringtoDateTimestring
8、str=2008-2-1011:00:00;DateTimedt=newDateTime();dt=DateTime.Parse(str);Console.WriteLine(DateTime:0,dt);nDateTimetoStringdt=System.DateTime.Now;StringMyString;MyString=dt.ToString();Console.WriteLine(DateTime:0,dt);字符串常用操作字符串常用操作n字符串常用操作字符串常用操作Length属性、ToCharArray()方法(打散)、SubString()方法(截取)、IndexOf()(
9、字符匹配)、PadLeft()(填充)、Replace()、Splite()、Format()、Concat()、Join()等nSystem.Text.StringBuilder类:类:4个以上字符串连接时,更高的性能个以上字符串连接时,更高的性能stringreturnNumber=;for(inti=0;i1000;i+)returnNumber=returnNumber+i.ToString();String对象一旦生成不可改变(Immutable).每次使用System.String类中的方法时,都要在内存中创建一个新的字符串对象,而且为该新对象分配新的空间。原来的内存空间等待垃圾回
10、收器回收。StringreturnNumber=;StringBuildersb=newStringBuilder();DateTimestartDateTimeString;DateTimestartDateTimeStringBuilder;TimeSpants;startDateTimeString=DateTime.Now;returnNumber=;for(inti=0;i10000;i+)returnNumber=returnNumber+i.ToString();ts=DateTime.Now.Subtract(startDateTimeString);Console.Write
11、Line(String:0,ts.Milliseconds);startDateTimeStringBuilder=DateTime.Now;for(inti=0;i10000;i+)sb.Append(i.ToString();returnNumber=sb.ToString();ts=DateTime.Now.Subtract(startDateTimeStringBuilder);Console.WriteLine(StringBuilder:0,ts.Milliseconds);运行结果:String:359StringBuilder:15字符串比较字符串比较(=、EqualsorCo
12、mpareTo?)nEquals比较两个比较两个对象对象是否相等,即两个对象是否包含是否相等,即两个对象是否包含相同的内容相同的内容也就是比较引用类型是否是对同一个对象的引用也就是比较引用类型是否是对同一个对象的引用equals操作表示的两个变量是否是对同一个对象的引用,即堆中操作表示的两个变量是否是对同一个对象的引用,即堆中的内容是否相同。的内容是否相同。n=比较比较基本数据类型基本数据类型,如果两个,如果两个值相同值相同,则结果为,则结果为true比较比较引用引用时,如果引用时,如果引用指向内存中的同一对象指向内存中的同一对象,结果为,结果为true=操作比较的是两个变量的值是否相等,对于
13、引用型变量表示的操作比较的是两个变量的值是否相等,对于引用型变量表示的是两个变量在堆中存储的地址是否相同,即栈中的内容是否相同。是两个变量在堆中存储的地址是否相同,即栈中的内容是否相同。nCompareTo相等返回相等返回0classTeststaticvoidMain(stringargs)/Createtwoequalbutdistinctstringsstringa=newstring(newcharh,e,l,l,o);stringb=newstring(newcharh,e,l,l,o);Console.WriteLine(a=b);Console.WriteLine(a.Equal
14、s(b);/Nowletsseewhathappenswiththesametestsbut/withvariablesoftypeobjectobjectc=a;objectd=b;Console.WriteLine(c=d);Console.WriteLine(c.Equals(d);字符串是一个特殊的引用型类型,在字符串是一个特殊的引用型类型,在C#语言中,重载了语言中,重载了string对象的很对象的很多方法方法多方法方法(包括包括equals()方法方法),使,使string对象用起来就像是值类型一对象用起来就像是值类型一样。样。TrueTrueFalseTrue=、Equalsor
15、CompareTo?n对只关心内容的对只关心内容的引用类型引用类型直接使用直接使用Equals也可以使用也可以使用=,但一定要做转化,比如,但一定要做转化,比如ToString()方法方法n对值类型,使用可读性较好的对值类型,使用可读性较好的集合集合n一定要谨慎选择一定要谨慎选择System.Collections类类当需要当需要大小可按需动态增加大小可按需动态增加,并希望,并希望通过索引来进行通过索引来进行访问访问的数组的时候,使用的数组的时候,使用ArrayList.当需要一个能实现当需要一个能实现后进先出后进先出的集合时,使用的集合时,使用Stack.当需要一个当需要一个先进先出先进先出
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- dotnet02C 程序设计 基础
限制150内