第2章--C#语法基础

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

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

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

资源描述

第2章C#语法基础•C#的语法设计有很多地方与C/C++相似。本章介绍C#程序设计基础知识,包括数据类型、常量和变量、类型转换、运算符和语句结构。2.1数据类型•.NETFramework是一种跨语言的框架。为了在各种语言之间交互操作,部分.NETFramework指定了类型中最基础的部分,这称之为通用类型系统(CommonTypeSystem,CTS)。•C#支持CTS,其数据类型包括基本类型(类型中最基础的部分),如int、char、float等,也包括比较复杂的类型,如string、decimal等。作为完全面向对象的语言,C#中的所有数据类型是一个真正的类,具有格式化、系列化,以及类型转换等方法。根据在内存中存储位置的不同,C#中的数据类型可分为以下两类。•值类型:该类型的数据长度固定,存放于栈内。•引用类型:该类型的数据长度可变,存放于堆内。2.1.1值类型•C#内置的值类型是最基本的数据类型,例如整数、浮点数、字符、布尔类型等。•1.整数类型(sbyte,short,int,long,byte,......)•2.浮点数类型(float,double,decimal)•3.布尔型(bool)•4.字符型(char)•5.结构(struct)•6.枚举(enum)2.1.2引用类型•C#不允许在安全代码中使用指针,因此要处理堆中的数据就需要使用引用数据类型,使用new关键字实例化引用数据类型的对象,并指向堆中的对象数据。例如:•Obj1=newObj();•Obj1即指向堆中的Obj对象。对象的使用方法将在第3章详细介绍,此处,首先了解一下C#中内置的一些引用数据类型。•1.内置引用类型•2.数组•3.类、接口2.2变量和常量•变量是用来描述一条信息的名称,在变量中可以存储各种类型的信息。•数据和变量的关系:假设某人身高是180cm,那么“180”便是数据,而“身高”是变量。可以说“身高增加1”,即对变量进行操作,这时“身高”将改变为“181”,而不会说“180增加1”。2.2.1变量•在C#中,使用变量的基本原则是:先定义,后使用。C#中的变量命名规范如下:•(1)必须以字母或下划线开头;•(2)只能由字母、数字、下划线组成,不能包含空格、标点符号、运算符,以及其他符号;•(3)不能与C#关键字(如class、new等)同名。合法:inti;stringerror_msg;char@new;非法:intno.1;char1_new;stringstatic;2.2.2常量•同变量一样,常量也用来存储数据。它们的区别在于,常量一旦初始化就不再发生变化,可以理解为符号化的常数。使用常量可以使程序变得更加灵活易读,例如,可以用常量PI来代替3.1415926,一方面程序变得易读,另一方面,需要修改PI精度的时候无需在每一处都修改,只需在代码中改变PI的初始值即可。•常量的声明和变量类似,需要指定其数据类型、常量名,以及初始值,并需要使用const关键字,例如:•[public]constdoublePI=3.1415;2.3类型转换•在高级语言中,数据类型是很重要的一个概念,只有具有相同数据类型的对象才能够互相操作。很多时候,为了进行不同类型数据的运算(如整数和浮点数的运算等),需要把数据从一种类型转换为另一种类型,即进行类型转换。C#有两种转换方式。•隐式转换:无需指明转换,编译器自动将操作数转换为相同的类型。•显式转换:需指定把一个数据转换成其他类型。2.3.1隐式转换•当两个不同类型的操作数进行运算时,编译器会试图对其进行自动类型转换,使两者变为同一类型。但是,从2.1.1节可以看出,不同的数据类型具有不同的存储空间,如果试图将一个需要较大存储空间的数据转换为存储空间较小的数据,就会出现错误。例如:•1.intresult;•2.longval1=1;•3.longval2=2;•4.result=val1+val2;//出错2.3.2显式转换•显式类型转换,又叫做强制类型转换。在有些情况下,编译器不能够隐式转换数据类型,例如下面的代码就无法隐式转换:•1.intresult;•2.longval1=1;•3.longval2=2;•4.result=val1+val2;//出错•第4行改为:•4.result=(int)(val1+val2);2.3.3装箱和拆箱•前两个小节介绍了数据类型的转换。在下面的代码中:•1.inti=10;•2.strings=i.ToString();//封箱(Boxing)•i是一个值类型数据,存放在栈内存中;s是一个引用类型的String对象,存放在堆中。•封箱(Boxing):值类型转换为引用类型。隐式转换。•拆箱(Boxing):引用类型转换为值类型。必须显式转换。如:•objecta=newobject();•intj=(int)o;//拆箱(Boxing),要用显式转换。2.4运算符•C#中的运算符是用来对变量、常量或数据进行计算的符号,指挥计算机进行某种操作。可以将运算符理解为交通警察的命令,用来指挥行人或车辆等不同的运动实体(运算数),最后达到一定的目的。例如“+”是运算符,而“2+3”完成两数求和的功能。2.4.1算数运算符•算术运算符(arithmeticoperators)用来处理四则运算的符号,是最简单、最常用的符号,尤其数字的处理几乎都会使用到算术运算符。•符号示例意义•+a+b加法运算•−a−b减法/取负运算•*a*b乘法运算•/a/b除法运算•%a%b取余数•++a++累加•−−a−−递减2.4.2字符串运算符•字符串运算符(stringoperator)只有一个,就是加号“+”。它除了作为算术运算符之外,还可以将字符串连接起来,变成合并的新字符串。示例代码如下:•1.strings=Hello;•2.s=s+,World.;•3.Console.WriteLine(s);•//输出:Hello,World.2.4.3赋值运算符•赋值运算符(assignmentoperator)把其右边表达式的值赋给左边变量或常量。2.4.4逻辑运算符•逻辑运算符(logicaloperators)通常用来测试真假值。2.4.5位运算符•位运算符(bitwiseoperators)用于进行一些快速的数字运算,共有6个,2.4.6其他运算符•除上面5种运算符之外,C#还包括一些特殊的运算符。2.4.7运算符的优先级•运算符的优先级是指在表达式中哪一个运算符应该首先计算。算术中四则运算时“先乘除,后加减”便是运算符优先级的很好体现。•C#根据运算符的优先级确定表达式的求值顺序:优先级高的运算先做,优先级低的操作后做,相同优先级的操作从左到右依次做,同时用小括号控制运算顺序,任何在小括号内的运算最优先进行。2.6小结•本章主要介绍了C#语法的基础知识,包括数据类型及类型之间的相互转换、变量和常量、运算符。通过本章的学习,读者应该对C#语法有一初步的了解,可以编写较简单的语句结构。

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

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

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

×
保存成功