




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、C# 语 言 基 础C# Language Programing第1章 Visual C#简介C C+ Java Visual C#发展历史C#2000年微软推出;由Anders Hejlsberg和Scott Wilramuth领导的小组开发;为什么要开发C#呢?C#语言程序设计2第2章 C#简单程序编写代码遍历一个C#控制台程序C#语言程序设计3第2章 C#简单程序编写程序解读注释:用来说明程序和提高程序的可读性;1.单行注释语句 /2.界定注释可以跨多行/* This is a delimited comment. It can be split over many lines */ u
2、sing指令(注意大小写):帮助编译器找到程序使用的类;C#有丰富的预定义类,这些类组织成名字空间(namespace,即相关类的集合),.NET的名字空间统称为.NET的框架类库(FCL);对使用的每个新.NET类,要指定类所在的名字空间;C#语言程序设计4第2章 C#简单程序编写程序解读用户定义类每个程序至少要有一个用户定义类(即程序员定义的类);注意:class关键字要小写,C#中的关键字(保留字)都必须小写;但所有类名都是以大写字母开头(即Pascal规则);Main方法Main后面的括号是个程序块,被称为方法;在每个程序,类中有一个Main方法,否则这个程序无法执行;C#语言程序设计
3、5第2章 C#简单程序编写程序解读Console类Console类提供标准输入/输出功能,使程序可以在执行时读取和显示文本;Console.WriteLine(Welcome to C# Programming!);Console.Read();WriteLine方法用来在控制台输出变量;Read方法用来在控制台输入信息;; 是每个语句结束的符号;C#语言程序设计6第2章 C#简单程序编写lC#程序创建程序创建IDE的代码颜色模式IDE使用过的代码颜色模式为语法颜色高亮度显示,有助于区别不同程序元素;例如,关键字显示为蓝色,注释文本显示为绿色;行号利于程序阅读和修改;ToolsOptions对
4、话框Text EditorLine NumbersC#语言程序设计7第2章 C#简单程序编写lC#程序创建代码缩进将代码缩进设置为每层3格,也可以使用Tab键;程序文件名程序默认的文件名是Program.cs,可以在属性窗口中修改;IntelliSense特性IntelliSense(智能感应)可在输入程序时列出类的成员和方法名,方便输入;C#语言程序设计8第2章 C#简单程序编写lC#程序创建程序保存、编译与运行F5:启动调试常见编程错误注意留意常见的错误;一个错误可能产生多个错误消息;C#语言程序设计9第2章 C#简单程序编写lC#程序创建良好编程习惯习惯上,类名应该以大写字母开头,其中每
5、个单词首字母用大写;习惯上,包含一个公用类的文件命名时应于类同名,包括拼写和大小写,这样命名有助于程序员确定程序的类所在的位置;在分隔类体的左右括号之间将内容缩进一级,这种格式有利于显示类声明结构,增加可读性;设置缩进量,采用一致的习惯;和类一样,在定义方法时体的左右括号之间将每个方法声明的整体缩进一层;C#语言程序设计103 C#程序设计基础本章目录标识符C#中数据类型C#中的变量和常量结构类型和枚举类型C#运算符和表达式C#中常用类和结构C#语言程序设计113.1 标识符标识符 C#的标识符名称必须遵守以下规则:的标识符名称必须遵守以下规则:(1)所有的标识符只能由字母、数字和下划线这)所
6、有的标识符只能由字母、数字和下划线这3类字符类字符组成,且第一个字符必须为字母或下划线。组成,且第一个字符必须为字母或下划线。(2)标识符中不能包含空格、标点符号、运算符等其他)标识符中不能包含空格、标点符号、运算符等其他符号。符号。(3)标识符严格区分大小写。)标识符严格区分大小写。(4)标识符不能与)标识符不能与C#关键字名相同。关键字名相同。(5)标识符不能与)标识符不能与C#中的类库名相同。中的类库名相同。 a12_c 1abc 3.2 C#中数据类型中数据类型 数据类型 值类型 引用类型 简单类型 结构类型 枚举类型 整数类型 字符类型 布尔类型 实数类型 sbyte byte sh
7、ort ushort int uint long ulong floate double decimal 类 委托 数组 接口 C#中数据类型分类图中数据类型分类图 3.2.1值类型值类型 值类型的变量内含变量值本身,值类型的变量内含变量值本身,C#的值类型可以分为的值类型可以分为简单类型、结构类型和枚举类型。下面仅介绍简单类型。简单类型、结构类型和枚举类型。下面仅介绍简单类型。 1. 整数类型整数类型类型标识符类型标识符说明说明占用位数占用位数取值范围取值范围示例示例sbyte带符号字节型带符号字节型8-128127sbyte i=10 ;byte无符号字节型无符号字节型80255byte
8、i=10 ;short带符号短整型带符号短整型16-32,76832,767short i=10 ;ushort无符号短整型无符号短整型16065,535ushort i=10 ;int带符号整型带符号整型32-2,147,483,6482,147,483,647int i=10 ;uint无符号整型无符号整型3204,294,967,295uint i=10 ;uint i=10U ;long带符号长整型带符号长整型64-9,223,372,036,854,775,8089,223,372,036,854,775,807long i=10 ;long i=10L ;ulong无符号长整型无符
9、号长整型64018,446,744,073,709,551,615ulong i=16 ;ulong i=16U ;ulong i=16L ;ulong i=16UL ;2. 实数类型实数类型类型标识符类型标识符说明说明取值范围取值范围示例示例float单精度浮点数单精度浮点数1.510-45 3.41038,精度为,精度为7位数位数float f=1.23F ;double双精度浮点数双精度浮点数5.010-324 1.710308,精度为,精度为15到到16位数位数double d=1.23 ;decimal固定精度的浮点数固定精度的浮点数1.010-28到到7.91028的之间,的之间,
10、精度为精度为28至至29位有效数字位有效数字decimal d=1.23M ;3 字符类型字符类型 例如,可以采用如下方式字符变量赋值:例如,可以采用如下方式字符变量赋值: char c=H ; / 字符字符H char c=x0048; / 字符字符H,十六进制转义符(前缀为,十六进制转义符(前缀为x) char c=u0048; / 字符字符H,Unicode表示形式(前缀为表示形式(前缀为u) char c=r; / 回车,转义字符回车,转义字符 在表示一个字符常数时,单引号内的有效字符数量必须且只能在表示一个字符常数时,单引号内的有效字符数量必须且只能是一个,而且不能是单引号或者反斜杠
11、(是一个,而且不能是单引号或者反斜杠()。)。4. 布尔类型布尔类型 布尔类型数据用于表示逻辑真和逻辑假,布尔类型的布尔类型数据用于表示逻辑真和逻辑假,布尔类型的类型标识符是类型标识符是bool。 3.2.2 引用类型引用类型引用类型也称为参考类型。和值类型相比,引用类引用类型也称为参考类型。和值类型相比,引用类型的变量不直接存储所包含的值,而是指向它所要存储型的变量不直接存储所包含的值,而是指向它所要存储的值。类似的值。类似C中的指针。中的指针。 1. object类类 object是是C#中所有类型(包括所有的值类型和引用类型)中所有类型(包括所有的值类型和引用类型)的基类,的基类,C#中
12、的所有类型都直接或间接地从中的所有类型都直接或间接地从object类中继承类中继承而来。因此,对一个而来。因此,对一个object的变量可以赋予任何类型的值。的变量可以赋予任何类型的值。 float f=1.23; object obj1; /定义定义obj1对象对象 obj1=f; object obj2=China;/定义定义obj2对象并赋初值对象并赋初值2. string类类 C#还定义了一个还定义了一个string类,表示一个类,表示一个Unicode字符序列,专门字符序列,专门用于对字符串的操作。同样,这个类也是在用于对字符串的操作。同样,这个类也是在.NET Framework的
13、的命名空间命名空间System中定义的,是类中定义的,是类System.String的别名。的别名。字符串在实际中应用非常广泛,利用字符串在实际中应用非常广泛,利用string类中封装的各种内部类中封装的各种内部操作,可以很容易完成对字符串处理。例如:操作,可以很容易完成对字符串处理。例如: string str1=123+abc; /+运算符用于连接字符串运算符用于连接字符串 char c=Hello World!2; /运算符可以访问运算符可以访问string中的单个字符中的单个字符,c=e string str2=China; string str3=China; / 字符串的另一种表示
14、形式,用字符串的另一种表示形式,用引起来引起来。 bool b=(str2=str3); /=运算符用于两个字符串比较,运算符用于两个字符串比较,b=true3.2.3 类型转换类型转换 数据类型在一定条件下是可以相互转换的,如将数据类型在一定条件下是可以相互转换的,如将int型数据型数据转换成转换成double型数据。型数据。C#允许使用两种转换的方式:隐式转换允许使用两种转换的方式:隐式转换和显式转换。和显式转换。1. 隐式转换隐式转换 隐式转换是系统默认的、不需要加以声明就可以进行的转换。隐式转换是系统默认的、不需要加以声明就可以进行的转换。源类型源类型目标类型目标类型sbyteshor
15、t、int、long、float、double、decimalbyteshort、ushort、int、uint、long、ulong、float、double、decimalshortint、long、float、double、decimalushortint、uint、long、ulong、float、double、decimalintlong、float、double、decimaluintlong、ulong、float、double、decimallongfloat、double、decimalulongfloat、double、decimalcharushort、int、uint、
16、long、ulong、float、double、decimalfloatdouble2. 显式转换显式转换 显式转换又叫强制类型转换,与隐式转换相反,显式转换显式转换又叫强制类型转换,与隐式转换相反,显式转换需要用户明确地指定转换类型,一般在不存在该类型的隐式需要用户明确地指定转换类型,一般在不存在该类型的隐式转换时才使用。格式如下:转换时才使用。格式如下: (类型标识符类型标识符)表达式表达式 其作用是将其作用是将“表达式表达式”值的类型转换为值的类型转换为“类型标识符类型标识符”的的类型。例如:类型。例如: (int)1.23 /把把double类型的类型的1.23转换成转换成int类型,
17、结果为类型,结果为1 需要提醒注意以下几点:需要提醒注意以下几点: (1)显式转换可能会导致错误。进行这种转换时编译器将)显式转换可能会导致错误。进行这种转换时编译器将对转换进行溢出检测。如果有溢出说明转换失败,就表明源对转换进行溢出检测。如果有溢出说明转换失败,就表明源类型不是一个合法的目标类型,转换就无法进行。类型不是一个合法的目标类型,转换就无法进行。 (2)对于从)对于从float、double、decimal到整型数据的转换,将到整型数据的转换,将通过舍入得到最接近的整型值,如果这个整型值超出目标类通过舍入得到最接近的整型值,如果这个整型值超出目标类型的范围,则出现转换异常。型的范围
18、,则出现转换异常。 using System;namespace Proj3_1 class Program static void Main(string args) int i=65,i1,i2; double d = 66.3456,d1,d2; char c = A,c1,c2; Console.WriteLine(i=0:d5,d=1:f,c=2, i, d, c); i1 = (int)d; /强制类型转换强制类型转换 d1 = i;/隐式类型转换隐式类型转换 c1 = (char)i; /强制类型转换强制类型转换 Console.WriteLine(i1=0:d5,d1=1:f,
19、c1=2, i1, d1, c1); i2 = c; /隐式类型转换隐式类型转换 d2 = (int)d; /强制类型转换强制类型转换,转换成整数后再隐式转为转换成整数后再隐式转为double类型类型 c2 = (char)d; /强制类型转换强制类型转换 Console.WriteLine(i2=0:d5,d2=1:f,c2=2, i2, d2, c2); 【练习练习1】 设计一个控制台程序说明类型转换的应用。设计一个控制台程序说明类型转换的应用。3.2.4 装箱和拆箱装箱和拆箱 1. 装箱转换装箱转换装箱转换是指将一个值类型的数据隐式地转换成一个对象装箱转换是指将一个值类型的数据隐式地转换
20、成一个对象类型的数据。例如,下面语句就执行了装箱转换:类型的数据。例如,下面语句就执行了装箱转换:int i=8;object obj=i;或或object obj=(object)i;2. 拆箱转换拆箱转换拆箱转换是指将一个对象类型的数据显式地转换成一个拆箱转换是指将一个对象类型的数据显式地转换成一个值类型数据。例如,下面语句就执行了拆箱转换:值类型数据。例如,下面语句就执行了拆箱转换:object obj=2;int i=(int)obj;拆箱转换需要(而且必须)执行显式转换,这是它与装箱拆箱转换需要(而且必须)执行显式转换,这是它与装箱转换的不同之处。转换的不同之处。3.3 C#3.3
21、C#中的变量和常量中的变量和常量3.3.1 变量变量1. 变量定义变量定义 在在C#程序里使用某个变量之前,必须要告诉编译器它程序里使用某个变量之前,必须要告诉编译器它是一个什么样的变量,因此要对变量进行定义。定义变量是一个什么样的变量,因此要对变量进行定义。定义变量的方法如下:的方法如下: 访问修饰符访问修饰符 数据类型数据类型 变量名变量名 = 初始值初始值;例如:例如: string name=王华王华; int age=20;也可以同时声明一个或多个给定类型的变量,例如:也可以同时声明一个或多个给定类型的变量,例如: int a=1,b=2,c=3;2. 理解值类型的变量理解值类型的变
22、量 如果一个变量的值是普通的类型,那么这个如果一个变量的值是普通的类型,那么这个C#变量就变量就是值类型的变量。值类型的变量直接把值存放在变量名标是值类型的变量。值类型的变量直接把值存放在变量名标记的存储位置上。记的存储位置上。 当定义一个值类型变量并且给它赋值的时候,这个变量当定义一个值类型变量并且给它赋值的时候,这个变量只能存储相同类型的数据。所以,一个只能存储相同类型的数据。所以,一个int类型的变量就只类型的变量就只能存放能存放int类型的数据。另外,当把值赋给某个值类型的变类型的数据。另外,当把值赋给某个值类型的变量时,量时,C#会首先创建这个值的一个拷贝,然后把这个拷贝会首先创建这
23、个值的一个拷贝,然后把这个拷贝放在变量名所标记的存储位置上。放在变量名所标记的存储位置上。 例如:例如: int x; int y=2; x=y;3. 理解引用类型的变量理解引用类型的变量 引用表示所使用的是变量或对象的地址而不是变量或引用表示所使用的是变量或对象的地址而不是变量或对象本身。当声明引用类型变量时,程序只是分配了存对象本身。当声明引用类型变量时,程序只是分配了存放这个引用的存储空间。要想创建对象并把对象的存储放这个引用的存储空间。要想创建对象并把对象的存储地址赋给该变量,就需要使用地址赋给该变量,就需要使用new操作符。例如:操作符。例如: MyClass var; /MyCla
24、ss是已定义的类或类型是已定义的类或类型 var=new MyClass();数组示例:数组示例: int a = new int3 1, 2, 3; for (int i = 0; i 3; i+) Console.Write(0 ,ai); 3.3.2 常量常量1. 直接常量直接常量 直接常量是指把程序中不变的量直接硬编码为数值或直接常量是指把程序中不变的量直接硬编码为数值或字符串值,例如,以下都是直接常量:字符串值,例如,以下都是直接常量: 100 /整型直接常量整型直接常量 1.23e5 /浮点型直接常量浮点型直接常量2. 符号常量符号常量 符号常量是通过关键字符号常量是通过关键字co
25、nst声明的常量,包括常量的声明的常量,包括常量的名称和它的值。常量声明的格式如下:名称和它的值。常量声明的格式如下: const 数据类型数据类型 常量名常量名=初始值初始值; 其中,其中,“常量名常量名”必须是必须是C#的合法标识符,在程序中的合法标识符,在程序中通过常量名来访问该常量。通过常量名来访问该常量。“类型标识符类型标识符”指示了所定指示了所定义的常量的数据类型,而义的常量的数据类型,而“初始值初始值”是所定义的常量的是所定义的常量的值。值。 例如:例如: const double PI=3.14159265;3.4 结构类型和枚举类型结构类型和枚举类型3.4.1 结构类型结构类
26、型1. 结构类型的声明结构类型的声明 结构类型由若干结构类型由若干“成员成员”组成的。数据成员称为字段,组成的。数据成员称为字段,每个字段都有自已的数据类型。声明结构类型的一般格式每个字段都有自已的数据类型。声明结构类型的一般格式如下:如下: struct 结构类型名称结构类型名称 字段访问修饰符字段访问修饰符 数据类型数据类型 字段字段1; 字段访问修饰符字段访问修饰符 数据类型数据类型 字段字段2; . 字段访问修饰符字段访问修饰符 数据类型数据类型 字段字段n; ;例如,以下声明一个具有姓名和年龄的结构体类型例如,以下声明一个具有姓名和年龄的结构体类型Student:struct Stu
27、dent/声明结构类型声明结构类型Student public int xh;/学号学号 public string xm;/姓名姓名 public string xb;/性别性别 public int nl;/年龄年龄 public string bh;/班号班号;2. 结构类型变量的定义结构类型变量的定义 声明一个结构类型后,可以定义该结构类型的变量(简声明一个结构类型后,可以定义该结构类型的变量(简称为结构变量)。定义结构变量的一般格式如下:称为结构变量)。定义结构变量的一般格式如下: 结构类型结构类型 结构变量结构变量; 例如,在前面的结构类型例如,在前面的结构类型Student声明后
28、,定义它的两声明后,定义它的两个变量如下:个变量如下: Student s1,s2;3. 结构变量的使用结构变量的使用1)访问结构变量字段)访问结构变量字段访问结构变量字段的一般格式如下:访问结构变量字段的一般格式如下: 结构变量名结构变量名.字段名字段名 例如,例如,s1.xh表示结构变量表示结构变量s1的学号,的学号,s2.xm表示结构变量表示结构变量s2的姓名。的姓名。 结构体变量的字段可以在程序中单独使用,与普通变量完结构体变量的字段可以在程序中单独使用,与普通变量完全相同。全相同。2)结构变量的赋值)结构变量的赋值 结构变量的赋值有两种方式。结构变量的赋值有两种方式。 结构变量的字段
29、赋值:使用方法与普通变量相同。结构变量的字段赋值:使用方法与普通变量相同。 结构变量之间赋值:要求赋值的两个结构变量必须类型相结构变量之间赋值:要求赋值的两个结构变量必须类型相同。例如:同。例如: s1=s2;这样这样s2的所有字段值赋给的所有字段值赋给s1的对应字段。的对应字段。 【例例3.2】 设计一个控制台程序说明结构类型的应用。设计一个控制台程序说明结构类型的应用。using System;namespace Proj3_2 class Program struct Student /结构类型声明应放在结构类型声明应放在Main函数的外面函数的外面 public int xh; /学号
30、学号 public string xm; /姓名姓名 public string xb; /性别性别 public int nl; /年龄年龄 public string bh; /班号班号 static void Main(string args) Student s1,s2;/定义两个结构类型变量定义两个结构类型变量 s1.xh = 101; s1.xm = 李明李明; s1.xb = 男男; s1.nl = 20; s1.bh = 07001; Console.WriteLine(学号学号:0,姓名姓名:1,性别性别:2,年龄年龄:3, 班号班号:4, s1.xh, s1.xm, s1.
31、xb, s1.nl, s1.bh); s2 = s1;/将结构变量将结构变量s1赋给赋给s2 s2.xh = 108; s2.xm = 王华王华; Console.WriteLine(学号学号:0,姓名姓名:1,性别性别:2,年龄年龄:3, 班号班号:4, s2.xh, s2.xm, s2.xb, s2.nl, s2.bh); 3.4.2 枚举类型枚举类型枚举类型也是一种自定义数据类型,它允许用符号代表数枚举类型也是一种自定义数据类型,它允许用符号代表数据。枚举是指程序中某个变量具有一组确定的值,通过据。枚举是指程序中某个变量具有一组确定的值,通过“枚举枚举”可以将其值一一列出来。可以将其值一
32、一列出来。1. 枚举类型的声明枚举类型的声明 枚举类型使用枚举类型使用enum关键字声明,其一般语法形式如下:关键字声明,其一般语法形式如下: enum 枚举名枚举名枚举成员枚举成员1,枚举成员枚举成员2,其中,其中,enum是结构类型的关键字。例如,以下声明一个名是结构类型的关键字。例如,以下声明一个名称为称为color的表示颜色的枚举类型:的表示颜色的枚举类型: enum Color Red,Green,Blue,White,Black在声明枚举类型后,可以通过枚举名来访问枚举成员,其在声明枚举类型后,可以通过枚举名来访问枚举成员,其使用语法如下:使用语法如下: 枚举名枚举名.枚举成员枚举
33、成员2. 枚举成员的赋值枚举成员的赋值 在声明的枚举类型中,每一个枚举成员都有一个相对在声明的枚举类型中,每一个枚举成员都有一个相对应的常量值,默认情况下应的常量值,默认情况下C#规定第规定第1个枚举成员的值取个枚举成员的值取0,它后面的每一个枚举成员的值按加它后面的每一个枚举成员的值按加1递增。例如,前面递增。例如,前面Color中,中,Red值为值为0,Green值为值为1,Blue值为值为2,依次类,依次类推。推。 可以为一个或多个枚举成员赋整型值,当某个枚举成可以为一个或多个枚举成员赋整型值,当某个枚举成员赋值后,其后的枚举成员没有赋值的话,自动在前一个员赋值后,其后的枚举成员没有赋值
34、的话,自动在前一个枚举成员值之上加枚举成员值之上加1作为其值。例如:作为其值。例如: enum Color Red=0, Green, Blue=3, White, Black=1;则这些枚举成员的值分别为则这些枚举成员的值分别为0、1、3、4、1。3. 枚举类型变量的定义枚举类型变量的定义 声明一个枚举类型后,可以定义该枚举类型的变量(简声明一个枚举类型后,可以定义该枚举类型的变量(简称为枚举变量)。定义枚举变量的一般格式如下:称为枚举变量)。定义枚举变量的一般格式如下: 枚举类型枚举类型 枚举变量枚举变量; 例如,在前面的枚举类型例如,在前面的枚举类型Color声明后,定义它的两个变声明后
35、,定义它的两个变量如下:量如下: Color c1,c2;1)枚举变量的赋值)枚举变量的赋值枚举变量赋值的语法格式如下:枚举变量赋值的语法格式如下: 枚举变量枚举变量=枚举名枚举名.枚举成员枚举成员例如:例如: c1=Color.Red;2)枚举变量的访问)枚举变量的访问 枚举变量像普通变量一样直接访问。枚举变量像普通变量一样直接访问。3.5 C#运算符和表达式运算符和表达式3.5.1 算术运算符算术运算符符号符号意义意义示例示例+加法运算加法运算a+b减法减法/取负运算取负运算ab*乘法运算乘法运算a*b/除法运算除法运算a/b%取余数取余数a%b+累加累加a+递减递减a 3.5.2 字符串
36、运算符字符串运算符 字符串运算符只有一个,就是加号(字符串运算符只有一个,就是加号(+)。它除了作)。它除了作为算术运算符之外,还可以将字符串连接起来,变成合为算术运算符之外,还可以将字符串连接起来,变成合并的新字符串。例如:并的新字符串。例如: string s=Hello; s=s+, World.; Console.WriteLine(s); /输出:输出:Hello, World.练习练习2:string s=Hello;String s2 =s; s=s+, World.; Console.WriteLine(s2); /输出:输出:?3.5.3 赋值运算符赋值运算符 赋值运算符(赋
37、值运算符(=)用于改变变量的值,它先求出右侧表达)用于改变变量的值,它先求出右侧表达式的结果,然后再将结果赋给左侧的变量。式的结果,然后再将结果赋给左侧的变量。 符号符号意义意义示例示例+=加赋值加赋值a+=b等价于等价于a=a+b=减赋值减赋值a-=b等价于等价于a=a-b*=乘赋值乘赋值a*=b等价于等价于a=a*b/=除赋值除赋值a/=b等价于等价于a=a/b%=取模赋值取模赋值a%=b等价于等价于a=a%b=左移赋值左移赋值a=b等价于等价于a=a=右移赋值右移赋值a=b等价于等价于a=ab&=与赋值与赋值a&=b等价于等价于a=a&b=异或赋值异或赋值a=b等
38、价于等价于a=ab|=或赋值或赋值a|=b等价于等价于a=a|b3.5.4 关系运算符关系运算符符号符号意义意义示例示例小于小于23为为true=小于等于小于等于2大于大于23为为false=大于等于大于等于2=3为为false=等于等于2=3为为false!=不等于不等于2!=3为为true3.5.5 逻辑运算符逻辑运算符符号符号意义意义示例示例!逻辑非逻辑非!(23)为为false&逻辑与逻辑与(34)为为true|逻辑或逻辑或(34)为为true3.5.6 位运算符位运算符符号符号意义意义示例示例按位求反按位求反!2左移左移8右移右移82&按位与按位与8&5按位异
39、或按位异或85|按位或按位或8|53.5.7 条件运算符条件运算符 条件运算符是一个三元运算符,每个操作数同时又是表条件运算符是一个三元运算符,每个操作数同时又是表达式的值。由条件运算符构成的表达式称为条件表达式。达式的值。由条件运算符构成的表达式称为条件表达式。条件运算符的使用格式如下:条件运算符的使用格式如下: 表达式表达式1 ? 表达式表达式2 : 表达式表达式3 它的计算方式为,先计算它的计算方式为,先计算“表达式表达式1”(必须为布尔值)(必须为布尔值)的值,如果其值的值,如果其值true,则,则“表达式表达式2”的值作为整个表达式的值作为整个表达式的最终结果;否则的最终结果;否则“
40、表达式表达式3”的值作为整个表达式的值。的值作为整个表达式的值。 例如,以下表达式返回例如,以下表达式返回a和和b中的最大值:中的最大值: max=ab ? a : b计算过程是,当计算过程是,当ab,max= a; 否则否则max=b。3.5.9 运算符的优先级运算符的优先级 运算符的优先级是指在表达式中哪一个运算符应该首先运算符的优先级是指在表达式中哪一个运算符应该首先计算。计算。 C#根据运算符的优先级确定表达式的求值顺序:优先级根据运算符的优先级确定表达式的求值顺序:优先级高的运算先做,优先级低的操作后做,相同优先级的操作高的运算先做,优先级低的操作后做,相同优先级的操作从左到右依次做
41、,同时用小括号控制运算顺序,任何在小从左到右依次做,同时用小括号控制运算顺序,任何在小括号内的运算最优先进行。括号内的运算最优先进行。 3.6 C#中常用类和结构中常用类和结构C#中一切都是对象中一切都是对象 。3.6.1 String类类属性属性说明说明decimal获取此字符串中位于指定字符位置的字符。获取此字符串中位于指定字符位置的字符。Length 获取此字符串中的字符数。获取此字符串中的字符数。 string类型是类型是.NET Framework中的中的String类的别名。类的别名。string类型定义了相等运算符(类型定义了相等运算符(=和和!=)用于比较两个)用于比较两个st
42、ring对象,对象,叧叧外,外,+运算符用于连接字符串,运算符用于连接字符串,运算符可以用来访问运算符可以用来访问string中的各个字符。中的各个字符。 方法方法说明说明Compare 静态方法。比较两个指定的静态方法。比较两个指定的String对象对象CompareTo 非静态方法。将此字符串与指定的对象或非静态方法。将此字符串与指定的对象或String进行比较,并返回两者相对值的进行比较,并返回两者相对值的指示指示Concat 静态方法。连接静态方法。连接String的一个或多个字符串的一个或多个字符串Contains 非静态方法。返回一个值,该值指示指定的非静态方法。返回一个值,该值指
43、示指定的String对象是否出现在此字符串中对象是否出现在此字符串中 Equals 非静态方法。确定两个非静态方法。确定两个String对象是否具有相同的值对象是否具有相同的值Format 静态方法。将指定的静态方法。将指定的String中的每个格式项替换为相应对象的值的文本等效项中的每个格式项替换为相应对象的值的文本等效项 IndexOf 非静态方法。返回非静态方法。返回String或一个或多个字符在此字符串中的第一个匹配项的索引或一个或多个字符在此字符串中的第一个匹配项的索引Insert 非静态方法。在该非静态方法。在该String中的指定索引位置插入一个指定的中的指定索引位置插入一个指定
44、的StringRemove 非静态方法。从该非静态方法。从该String中删除指定个数的字符中删除指定个数的字符Replace 非静态方法。将该非静态方法。将该String中的指定中的指定String的所有匹配项替换为其他指定的的所有匹配项替换为其他指定的 StringSplit 非静态方法。返回包含该非静态方法。返回包含该String中的子字符串(由指定中的子字符串(由指定Char或或String数组的元素数组的元素分隔)的分隔)的String数组数组Substring 非静态方法。从此字符串中检索子字符串非静态方法。从此字符串中检索子字符串ToLower 非静态方法。返回该非静态方法。返回
45、该String转换为小写形式的副本转换为小写形式的副本ToUpper 非静态方法。返回该非静态方法。返回该String转换为大写形式的副本转换为大写形式的副本Trim 非静态方法。从此字符串的开始位置和末尾移除一组指定字符的所有匹配项非静态方法。从此字符串的开始位置和末尾移除一组指定字符的所有匹配项【练习练习3】 设计一个控制台程序求用户输入的子串在主串中位置。设计一个控制台程序求用户输入的子串在主串中位置。using System;namespace Proj3_6 class Program static void Main(string args) String mstr,sstr; C
46、onsole.Write(输入主串输入主串:); mstr = Console.ReadLine(); Console.Write(输入子串输入子串:); sstr = Console.ReadLine(); Console.WriteLine(主串长度主串长度=0,子串长度子串长度=1, mstr.Length, sstr.Length); if ( ) Console.WriteLine( );/输出位置输出位置else Console.WriteLine(两个字符串相同两个字符串相同); 3.6.2Math类类 Math类位于类位于System命名空间中,它包含了实现命名空间中,它包含了
47、实现C#中中常用算术运算功能的方法,这些方法都是静态方法,可通常用算术运算功能的方法,这些方法都是静态方法,可通过过“Math.方法名方法名(参数参数)”来使用。来使用。3.6.3 Convert类类Convert类位于类位于System命名空间中,用于将一个值类命名空间中,用于将一个值类型转换成另一个值类型。这些方法都是静态方法,可通型转换成另一个值类型。这些方法都是静态方法,可通过过“Convert.方法名方法名(参数参数)”来使用。来使用。ToBoolean将数据转换成将数据转换成Boolean类型类型ToDataTime将数据转换成日期时间类型将数据转换成日期时间类型ToInt16将数
48、据转换成将数据转换成16位整数类型位整数类型ToInt32将数据转换成将数据转换成32位整数类型位整数类型ToInt64将数据转换成将数据转换成64位整数类型位整数类型ToDouble将数据转换成将数据转换成Double类型类型ToObject将数据转换成将数据转换成Object类型类型ToString将数据转换成将数据转换成string类型类型3.6.4 DateTime结构结构DateTime结构类位于结构类位于System命名空间中,命名空间中,DateTime值值类型表示值范围在公元类型表示值范围在公元0001年年1月月1日午夜日午夜12:00:00到公元到公元9999年年12月月31
49、日晚上日晚上11:59:59之间的日期和时间。之间的日期和时间。 可以通过以下语法格式定义一个日期时间变量:可以通过以下语法格式定义一个日期时间变量: DateTime 日期时间变量日期时间变量 = new DateTime(年年,月月,日日,时时,分分,秒秒);例如,以下语句定义了例如,以下语句定义了2个日期时间变量:个日期时间变量:DateTime d1 = new DateTime(2009,10,1);DateTime d2 = new DateTime(2009,10,1,8,15,20); 其中,其中,d1的值为的值为2009年年10月月1日零点零分零秒,日零点零分零秒,d2的值的
50、值为为2009年年10月月1日日8点点15分分20秒。秒。属性属性 说明说明 Date 获取此实例的日期部分获取此实例的日期部分Day 获取此实例所表示的日期为该月中的第几天获取此实例所表示的日期为该月中的第几天DayOfWeek 获取此实例所表示的日期是星期几获取此实例所表示的日期是星期几DayOfYear 获取此实例所表示的日期是该年中的第几天获取此实例所表示的日期是该年中的第几天Hour 获取此实例所表示日期的小时部分获取此实例所表示日期的小时部分Millisecond 获取此实例所表示日期的毫秒部分获取此实例所表示日期的毫秒部分Minute 获取此实例所表示日期的分钟部分获取此实例所表
51、示日期的分钟部分Month 获取此实例所表示日期的月份部分获取此实例所表示日期的月份部分Now 获取一个获取一个DateTime对象,该对象设置为此计算机上的当前日期和时间,对象,该对象设置为此计算机上的当前日期和时间,表示为本地时间表示为本地时间Second 获取此实例所表示日期的秒部分获取此实例所表示日期的秒部分TimeOfDay 获取此实例的当天的时间获取此实例的当天的时间Today 获取当前日期获取当前日期Year 获取此实例所表示日期的年份部分获取此实例所表示日期的年份部分方法方法说明说明AddDays非静态方法。将指定的天数加到此实例的值上非静态方法。将指定的天数加到此实例的值上A
52、ddHours非静态方法。将指定的小时数加到此实例的值上非静态方法。将指定的小时数加到此实例的值上AddMilliseconds非静态方法。将指定的毫秒数加到此实例的值上非静态方法。将指定的毫秒数加到此实例的值上AddMinutes非静态方法。将指定的分钟数加到此实例的值上非静态方法。将指定的分钟数加到此实例的值上AddMonths非静态方法。将指定的月份数加到此实例的值上非静态方法。将指定的月份数加到此实例的值上AddSeconds非静态方法。将指定的秒数加到此实例的值上非静态方法。将指定的秒数加到此实例的值上AddYears非静态方法。将指定的年份数加到此实例的值上非静态方法。将指定的年份
53、数加到此实例的值上Compare静态方法。比较静态方法。比较DateTime的两个实例,并返回它们相对值的指示的两个实例,并返回它们相对值的指示CompareTo非静态方法。将此实例与指定的对象或值类型进行比较,并返回二者相非静态方法。将此实例与指定的对象或值类型进行比较,并返回二者相对值的指示对值的指示DaysInMonth静态方法。返回指定年和月中的天数静态方法。返回指定年和月中的天数IsLeapYear静态方法。返回指定的年份是否为闰年的指示静态方法。返回指定的年份是否为闰年的指示Parse静态方法。将日期和时间的指定字符串表示转换成其等效的静态方法。将日期和时间的指定字符串表示转换成其
54、等效的DateTime【例例3.8】 设计一个控制台程序说明设计一个控制台程序说明DataTime结构的使用。结构的使用。 using System;namespace Proj3_7 class Program static void Main(string args) DateTime d1 = DateTime.Now; /定义当前日期时间变量定义当前日期时间变量 DateTime d2 = new DateTime(2009, 10, 1); /定义一个日期时间变量定义一个日期时间变量 Console.WriteLine(d1:0,d1); int i = d1.Year;/求求d1的
55、年的年 int j = d1.Month;/求求d1的月的月 int k = d1.Day;/求求d1的日的日 int h = d1.Hour;/求求d1的时的时 int m = d1.Minute;/求求d1的分的分 int s = d1.Second;/求求d1的秒的秒 Console.WriteLine(d1:0年年1月月2日日3时时4分分5秒秒,i,j,k,h,m,s); Console.WriteLine(d2:0,d2); Console.WriteLine(相距时间相距时间:0,d2 - d1); DateTime d3 = d1.AddDays(100); /d3为为d1的的1
56、00天后的日期天后的日期 Console.WriteLine(d3:0,d3); Console.WriteLine(DateTime.IsLeapYear(i);/静态方法调用静态方法调用 Console.WriteLine(DateTime.IsLeapYear(d2.Year); 4 C#控制语句本章目录选择语句循环语句跳转语句C#语言程序设计584.1 选择控制语句选择控制语句4.1.1 if语句语句基本语法格式如下:基本语法格式如下:if (条件表达式条件表达式) 语句语句;其中,其中,“条件表达式条件表达式”是一个关系表达式或逻辑表达是一个关系表达式或逻辑表达式,当式,当“条件表达
57、式条件表达式”为为true时,执行后面的时,执行后面的“语句语句”。4.1.2 ifelse语句语句语法形式如下:语法形式如下:if (条件表达式条件表达式) 语句语句1;else 语句语句2;其中的其中的“条件表达式条件表达式”是一个关系表达式或逻辑表达是一个关系表达式或逻辑表达式。当式。当“条件表达式条件表达式”为为true时执行时执行“语句语句1”;当;当“条件条件表达式表达式”为为false时执行时执行“语句语句2”。 4.1.3 ifelse if语句语句 ifelse if语句用于进行多重判断,其语法形式如下:语句用于进行多重判断,其语法形式如下: if (条件表达式条件表达式1)
58、 语句语句1; else if (条件表达式条件表达式2) 语句语句2; else if (条件表达式条件表达式n) 语句语句n; else 语句语句n+1;falsefalsefalsetruetruetrue条件条件表达式表达式1 1语句语句1条件条件表达式表达式2 2条件条件表达式表达式n n语句语句2语句语句n+1n+1语句语句nfalse【练习练习4】 编写一个程序,将用户输入的分数转换成等级。编写一个程序,将用户输入的分数转换成等级。using System;namespace Proj4_4 class Program static void Main(string args)
59、float x; Console.Write(分数分数:); x=Console.ReadLine(); if (x=90) Console.WriteLine(等级为等级为A); else if (x = 80) Console.WriteLine(等级为等级为B); else if (x = 70) Console.WriteLine(等级为等级为C); else if (x = 60) Console.WriteLine(等级为等级为D); else Console.WriteLine(等级为等级为E); 上面这个程序有什么问题吗?请试下上面这个程序有什么问题吗?请试下4.1.4 swi
60、tch语句语句 switch语句也称为开关语句,用于有多重选择的场合测语句也称为开关语句,用于有多重选择的场合测试某一个变量具有多个值时所执行的动作。试某一个变量具有多个值时所执行的动作。switch语句的语句的语法形式为:语法形式为:switch (表达式表达式)case 常量表达式常量表达式1: 语句语句1; case 常量表达式常量表达式2: 语句语句2; case 常量表达式常量表达式n: 语句语句n; default:语句语句n+1;falsefalsefalsefalsetruetrue语句语句2语句语句n+1语句语句n表达式表达式=常量表达式常量表达式n表达式表达式=常量表达式常量表达式2语句语句1 1表达式表达式=常量表
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 吊装安全专项方案
- 四川交通职业技术学院《阅读理解思路与技巧一》2023-2024学年第二学期期末试卷
- 数学预习导航离散型随机变量的方差
- 业主装修购买合同范例
- 公司租用职工车辆合同范例
- led显示租赁合同范例
- 农村房屋买合同范例
- 北京 新版合同范例
- 手术类型与适应症
- 2025年四川科技职业学院高职单招职业技能测试近5年常考版参考题库含答案解析
- 统编版(2024)道德与法治七年级下册第一单元 珍惜青春时光 单元测试卷(含答案)
- 儿童各年龄期保健儿童保健学课件
- 苏教版数学一年级下册(2024)第七单元观察物体(一)综合素养测评 A 卷(含答案)
- 2025年中考英语第一次模拟试卷01(广州专用)(原卷版)
- 2025年乌兰察布医学高等专科学校高职单招职业技能测试近5年常考版参考题库含答案解析
- 2024入团知识题库(含答案)
- 《无人机操控技术》 课件 项目 3 无人机视距内操控技术
- 伦理审查表(一式三份)
- 义务教育英语课程标准(2022年版)
- 鲁滨逊漂流记阅读练习题
- 输电线路工程归档清单
评论
0/150
提交评论