• 2.1.1 语法概述程序员
• 在C# 2008代码中,会看到各类标点符号来分割一系列语句。可不要小看这些标点符号,假如写错一个标点符号,编写的程序就有可能编译不经过。因此,就从这些小小的标点符号来开始C# 2008语法的学习。下面提供了C# 2008中使用的标点符号和它们的说明。
• 分号“;”:指明一条代码语句的结束。
• 冒号“:”:
• 2.1.2 C# 2008中的注释
• 在C# 2008中,注释就像空白符同样,会被忽略,可是在编写代码的时候很是有用。C# 2008有两种标准注释方式。第一种方式是单行注释,在注释开头处加上标识符,用于提示编译器忽略这一行后续的部分。第二种方式是多行注释,在注释的开头和结尾都加上标识符。单行注释用两个正斜线来表示。例如:
• // 这是注释。
• 单行注释中,该行“//”以后的文本都会被编译器认为是注释,注释自动在行尾结束,其只能用于单行注释。多行注释用“/*”字符串开始,以“*/”字符串结束。例如:
• /*这是注释*/
• /*这也是
• 注释*/
• 2.2 常量和变量
• C# 2008是强类型语言,因此常量和变量都必须先声明类型。当声明了类型后,计算机就会知道处理什么样的数据,以及采用哪一种格式保存数据等。
• 在之前编写程序时(使用C和C++),没有提供丰富的数据类型,开发人员必须把基本数据类型组合到类和结构中,本身构建数据类型或者使用存储在头文件中的模板代码(STL)或复杂的专用库,例如MFC。如今,在C# 2008语言中,其支持CTS(Common Type System),其中的数据类型集合不只包括熟悉的基本类型,例如int类型、char类型和float类型等,还包括比较复杂的类型,例如string类型和decimal类型。C# 2008语言中,包括两种类型。
• 值类型:值为固定长度的数据,存储在堆栈中。包括简单类型、枚举类型和结构类型等。
• 引用类型:值存储在堆中。包括类类型、数组类型和接口类型等。
• 2.2.1 C# 2008预约义类型
• 【本节示例参考:\示例代码\Chap02\TypeUse】
• C# 2008语言中,值类型能够分为:
• 简单类型(内建类型)。
• 结构(用户定义的值类型)。
• 枚举。
• 简单类型,是直接由一系列元素成员构成的数据类型。均为.NET框架系统类型的别名,从计算机角度能够把简单类型分为:
• 整数类型。
• 布尔类型。
• 实数类型。
• 2.2.2 常量
• 在程序运行过程当中,值不能被改变的量称为常量,即常量就是值固定不变的量。常量的型能够是任何一种。声明常量的格式:
• attributes constant -modifiers const type constant-declarators;
• 在上述声明中,常量修饰符constant –
modifiers能够是new、public、protected、internal、private。而type能够是sbyte、byte、short、ushort、int、uint、long、ulong、char、float、double、decimal、bool、string。例如:
• public const int x =1;
• 2.2.3 变量
• 在程序运行的过程当中,值能够改变的量称为变量。一个变量应该有一个名字,在内存中占据必定的存储单元,在该单元中存放变量的值。与常量不一样,变量的值能够反复赋数值。读者要区分变量名和变量值,变量名其实是一个符号地址,在对程序编译时由系统给每个变量名分配一个内存地址。在程序中从变量中取值,其实是经过变量名找到相应的内存地址,从存储单元中读取数据。
• 1.声明变量
• 2.赋值变量
• 3.变量的类型
• 2.3 运算符、表达式及优先级
• 上一节介绍了类型和变量,数值类型的经常使用操做即为数值计算,而计算就要涉及运算符。若是没有运算符,那些类型就是静止的,不能反应或执行有用的任务。C# 2008中的表达式,是由运算符、操做对象和标点符号连接而成的。
• C# 2008提供了大量的运算符,按照其处理操做数的不一样大体能够分为3类,即一元运算符、二元运算符和三元运算符。主要的运算符如表所示。
• 2.3.1 算术运算符和算术表达式
• 【本节示例参考:\示例代码\Chap02\NumberCirculation】
• C# 2008提供的算术操做符有五种:
• +加法运算符。
• -减法运算符。
• *乘法运算符。
• /除法运算符。
• %求余运算符。
• 2.3.2 赋值运算符和赋值表达式
• 【本节示例参考:\示例代码\Chap02\Compoundoperator】
• C# 2008提供了“=”赋值运算符,同时与赋值运算符相近的运算符还有“+=、-=、*=、/=、^=、<<= 、>>=”等复合赋值运算符。赋值的做用就是将一个数据赋给一个变量。例如“a=3”的做用就是将数据3赋给变量a。赋值的左边必须是一个变量,属性访问器或索引访问器的表达式。
• 在C# 2008中若是赋值运算符两边的操做数类型不一致,那就先要进行类型转换,同时赋值运算符还能够对变量进行连续赋值,例如a=b=c的表达式等价于a=(b=c)。读者要注意“=”操做符是右关联的。因此出现上面的等价关系。
• 2.3.3 关系运算符和逻辑运算符及表达式
• 【本节示例参考:\示例代码\Chap02\Difference】
• 严格的说关系运算符也是路基运算符的一种,由于关系表达式的返回值老是布尔值。关系运算符用来比较两个值。它有=、!=、〈、〉、〈
=和>=。逻辑运算符用来扩展条件语句。运算符号中?:是三元运算符,&&、||、&、^、|是二元操做符,而!是一元操做符。
• 2.3.4 位运算符和位运算
• 【本节示例参考:\示例代码\Chap02\ByteOperation】
• 在计算机中,任何信息都是以二进制形式保存的,“&”、“|”、“^”除了能够做为
• 逻辑运算符,也能够做为位运算符,它们对两个操做数中的每个二进制位都进行运算。除了这些位运算操做外,还有<<|、>>和~能够对数据按二进制位进行位操做。在这些运算符号中,只有~是一元运算符,而其余的都是二元运算符。同时,运算符的操做数只能是整数型或字符型的数据,不能为实型数据。位运算符号的简要说明见表。
• 2.3.5 其余特殊操做符
• 除了上面的各类操做符号外,还有一些特殊的操做符号,以下:
• 1.三元操做符
• “?:”三元操做符也称为条件操做符,该操做符是右关联的。例如:表达式“a?b:c?d:e”将按“a?b:(c?d:e)”形式执行。该运算符的运算规则对于条件表达式“a?x:y”,先计算条件a,而后进行判断。若是a的值为true,就计算x的值;不然计算y的值。
• 2.自增和自减操做符
• 自增和自减操做符有先后缀之分。对于前缀操做符的规则是“先增减,后使用”,然后缀操做符则正好相反,是“先使用,后增减”。
• 3.Checked和unchecked操做符
• Checked和unchecked操做符用于整型算术运算时控制当前环境中的溢出检查。
• 2.3.6 运算符的优先级
• 优先级就是在表达式中的运算顺序,上述介绍的运算符都有不一样的优先级。各运算符的优先级详细见表。
• 2.4 程序的流程控制
• 从结构化程序设计角度出发,程序有三种结构,使程序的执行重定向到代码的不一样部分。它们分别是顺序结构、选择结构和循环结构。结构的使用主要体现了开发人员的思惟,若是开发人员的思惟清晰,能够利用结构产生逻辑明晰合理的代码,混乱的思惟每每会产生含有逻辑错误的代码。
• 2.4.1 选择结构
• 当程序中须要进行两个或两个以上的选择时,能够根据条件判断来选择将要执行的一组语句。C# 2008中提供了if和switch语句。
• 1.if语句:if-else是经常使用的关键字,在C# 2008中会被大量用于条件判断等场合。if语句有多种形式的应用。
• 2.if语句的嵌套:在if语句中又包括一个或多个if语句成为if语句的嵌套。
• 3.switch语句:switch语句是多分支选择语句,用于将一个表达式的值同许多其余值比较,并按比较结果选择下面该执行哪些语句。虽然,上述的功能能够用嵌套的if语句来处理,但分支较多、嵌套的语句层数多、程序冗长且可读性低。
• 2.4.2 循环结构
• 循环结构是结构化程序设计的基本结构之一,它和顺序结构、选择结构共同做为各类复杂程序的基本构造单元,提供了根据指定条件反复执行某部分代码的功能。C# 2008提供了while语句、do—
while语句和for语句。
• 1.while语句
• 2.do—
while语句
• 3.for语句
• 4.foreach语句
• 5.循环的嵌套
• 6.停止循环
• 2.5 类型转换
• 在编写程序过程当中,会常常遇到这种状况,就是须要将一种数据类型的值赋给另外一种不一样数据类型的变量。例如,从int类型转换到long类型数据类型之间的转换等,因为数据类型有差别,在赋值时就须要进行数据类型的转换。在C# 2008中提供了以下的转换:
• 隐式转换。
• 显式转换。
• 使用命令的显示转换。
• 2.5.1 隐式转换
• 【本节示例参考:\示例代码\Chap02\TestTransformation1】
• 隐式转换就是不须要加以进行的转换,即在转换过程当中,编译器无需对转换进行详细检查就可以安全的执行转换。实际上就是从低精度的数值类型向高精度的数值类型转换。要实现隐式转换,须要同时知足两个条件,第一是两种类型彼此兼容,第二是目标类型的取值范围要大于源类型。通常来讲,转换的过程当中要保证不会致使信息丢失。
• 隐式转换的类型有隐式数值转换、隐式枚举转换和隐式引用转换;其发生的场合也包括函数调用、表达式计算和分配等。
• 2.5.2 显式转换
• 【本节示例参考:\示例代码\Chap02\TestTransformation2】
• 当两种类型不知足隐式转换的两个条件,即两种类彼此不兼容,或目标类型取值范围小于源类型时,隐式转换就没法进行,这时就须要进行显式类型转换。显式类型转换又叫强制类型转换,须要用户必须明确的指定转换的类型。显式类型转换的通用格式以下:
• 目标类 变量 =(目标类型)值
• 2.5.3 使用命令的显示转换
• 【本节示例参考:\示例代码\Chap02\TestTransformation3】
• 经过convert类提供的方法也能够实现各类类型的转换,其提供的方法如表所示。
• 2.6 小结
• 本章讲述了数值类型、常量、变量、运算符号和流程控制等一些程序员入门的必备知识。
• 数值类型、常量、变量和运算符号虽然简单,可是它们是程序代码的基础,没有它们就没有程序代码。若是要想当一名好的程序员,它们的熟练掌握是一项基本功。
流程控制是程序开发的经典内容,是程序设计中必不可少的一部分。主要包括顺序结构、选择结构、循环结构。经过对这些知识的运用,读者能够编写出处理各类状况的代码。本章的内容都是一些基本的知识,也是进入C# 2008语言学习的必经之门。