C#语言的基本原理.ppt
第一章:概述第二章:C#语言的基本原理第三章:C#中对象的创建第四章:面向对象的编程技术第五章:C#编程第六章:编写基于.NET 的应用 程序第七章:使用 ADO.NET 访问 数据,第八章:创建基于 Windows 的应用程序第九章:在 C#应用程序中使 用 XML Web Service第十章:创建 Web 应用程序十一章:应用程序设置和 部署十二章:进阶学习目标,C#程序设计语言课程内容,C#语言的基本原理,内容:,C#程序的基本原理 C#预定义类型 编写表达式 条件语句 循环语句,C#,学习完本节后,你将能够:了解C#语句使用大括号来组织语句在代码中加入注释,C#程序的基本原理 2.1,程序结构构成应用程序的必要元素有哪些?怎样组织这些元素,使得编译器能够识别应用程序代码?,第一个 C#程序:HelloWorld,using System;class HelloWorld static void Main()Console.WriteLine(“Hello,World!”);,HelloWorld.cs,第一个 C#程序:HelloWorld,1:using System;,第 1 行:,using 关键字用来引用.NET框架类库中的资源通常在程序文件的开头使用如果程序中需要多种资源,可以使用多次usingSystem 命名空间System命名空间提供了构建应用程序所需的系统统能的访问,第一个 C#程序:HelloWorld,2:class HelloWorld3:.8:,第 2,3,8 行:,类在C#或其他面向对象语言中,需要编写类使用关键字class定义一个类,类的内容放在一对 中示例中定义了一个名为HelloWorld的类,第一个 C#程序:HelloWorld,4:static void Main()5:.7:,第 4,5,7 行:,Main 方法Main 方法是应用程序的入口点,编译器将由该处开始执行程序方法体也放在一对 中每个C#的应用程序都必须包含Main方法,4:static void Main()5:.7:,第 4,5,7 行:,Main方法 static表示Main方法是一个全局方法void表示Main方法没有任何返回值,即返回值是空参数放在小括号中定义。此处括号内没有内容,表明Main方法没有任何参数,第一个 C#程序:HelloWorld,6:Console.WriteLine(“Hello,World!”);,第 6 行:,语句在C#中要执行的指令语句之间用;分隔,编译器通过分号来区分多个语句使用大括号 标识某个代码块的开始和结束,从而可以对语句进行组合。大括号必须成对匹配。,第一个 C#程序:HelloWorld,6:Console.WriteLine(“Hello,World!”);,第 6 行:,语句 HelloWorld程序的主要目的就是在屏幕上显示一条问候 WriteLine方法用来将问候语写到标准输出设备上。Console代表标准输出设备-屏幕,它属于System命名空间 WriteLine方法是Console类的方法。访问类或对象的方法使用 点取符.来完成。字符串用双引号“”表示 字符串“Hello,World”是WriteLine方法的参数,表示屏幕输出 的内容,第一个 C#程序:HelloWorld,作用良好、清晰的组织代码提高代码的可读性,易于代码维护C#的代码格式缩进区分大小写忽略空白区注释,建议使用约定的代码风格,注释 单行注释/多行注释/*和*/,/This is my first C#Programusing System;class HelloWorld static void Main()Console.WriteLine(Hello,World);,编译和运行 HelloWorld,using System;class HelloWorld static void Main()Console.WriteLine(“Hello,World!”);,HelloWorld.cs,C#语言的基本原理,内容:,C#程序的基本原理 C#预定义类型 编写表达式 条件语句 循环语句,C#,C#预定义类型 2.2,学习完本章后,你将能够:声明并初始化变量创建并使用字符串创建并使用常量执行类型转换,在编写应用程序时,都必须使用某种方式表示数据,因此必须正确使用数据类型,C#的内置数据类型大致可划分为:(P25表2.1)逻辑型:bool文本型:char,string整 型:byte,sbyte,short,ushort,int,uint,long,ulong浮点型:float,double,decimal,第 1步:声明变量作用:通过声明变量,可以在内存中为该变量申 请存储空间语法:类型 变量名;,int numberOfVisitors;string bear;,第 2步:初始化变量作用:给变量分配初值语法:变量名=初值;,string bear;bear=“Grizzly”;/声明和初始化一步完成string bear=“Grizzly”;,注意事项:bool 只能取2个值:true 或 falsechar 表示单个Unicode字符,用表示使用后缀(P27页表2-2),bool isOpen=0;/错误bool isOpen=false;char c=A;decimal balance=3400.20;/错误decimal balance=3400.20M;,特殊字符和转义字符,有些特殊字符无法直接放在引号中,此时要表示这些字符,必须使用转义符,检查Visual Studio.NET中的变量,如何设置断点、使用watch窗口、单步执行,Demo,字符串表示任意长度的Unicode字符序列字符串使用“”表示可以使用转义字符或verbatim字符,string s=Hello World;string filename=“c:trainerReadme.txt”;/错误或string filename=“c:trainerReadme.txt”;,常量是指一旦被初始化,其数值保持不变的变量常量通常用来表示有意义的固定数值,如圆周率声明常量时必须对其赋值语法:const 类型 常量名=数值,const decimal PI=3.1415926M;/圆周率const int earthRadius=6378;/地球半径,思考题:我们经常需要从多个相关的值中进行选取,如一种天气:晴、阴、雨、雪、雾一周的某一天:Monday,Tuesday,Sunday一年的某个月:Jan,Feb,Mar.Dec一种对齐方式:左对齐、右对齐、居中对齐、两端对齐,?,枚举类型是一组被命名的数字常量,即:一个枚举类型中包含了多个相关的数字常量,且每个常量都被赋予了一个容易记忆的“名字”使用enum关键字创建枚举类型,enum Weather Sunny,/默认值0Cloudy,/默认值1Rain,/默认值2Snow,/默认值3fog/默认值4,引用枚举成员,Weather bj;bj=Weather.Sunny;/显示结果Console.WriteLine(bj);/显示Sunny,而不是数字0,给枚举成员明确赋值,enum Month Jan=1,Feb=2,Mar=3,Dec=12,相容的数据类型可以混合运算。运算中,不同数据类型先被自动转换为相同数据类型,然后再进行运算。转换时低容量数据类型向高容量数据类型转换。低 高 byte short int long float double,将小容量数据类型转换成大容量数据类型时,系统自动完成,成为隐式转换 将大容量数据类型转换成小容量数据类型时,可能丢失信息,必须使用强制类型转换,int x=123456;long y=x;/将int隐式转换为long,decimal d=100.99;int x=(int)d;/x的值是100,小数点后的值被舍弃,C#语言的基本原理,内容:,C#程序的基本原理 C#预定义类型 编写表达式 条件语句 循环语句,C#,编写表达式 2.3,学习完本节后,你将能够:使用运算符和创建表达式 确定运算符的优先级,运算符就是表达式中的符号,按照运算符的优先级计算表达式可以使用圆括号控制运算的顺序左结合和右结合 所有二元运算符都是左结合的 赋值运算符和条件运算符是右结合的,(10+20)/5 结果是 610+(20/5)结果是 14,10+20/5结果是 14,C#语言的基本原理,内容:,C#程序的基本原理 C#预定义类型 编写表达式 条件语句 循环语句,C#,条件语句 2.4,条件语句可以根据布尔表达式的值,有选择性的执行程序的某一部分在C#中的条件语句有 if 和 switch 两种if 适合两个分支判断switch 适合多个分支判断,语法:else 部分可选if else 可以嵌套,if(布尔表达式)语句块1;else 语句块2;,if(sales 10000)bonus=0.05*sales;else bonus=0;,示例:运算符(?:)是 if else 语句的缩略形式,bonus=(sales1000)?(0.05*sales):0;,在互斥的多个选项中选一个,switch 语句很有用语法:,switch(待测试表达式)case value1:语句;break;case value2:语句;break;default:语句;break;,switch表达式中求值的类型可以是整形、字符型、字符串、枚举类型 计算表达式的值并进行等值匹配。若表达式的值与某个case标记中的值相等,则执行权转到该 case 标记后的语句break 跳出整个switch。每个case 中都必须使用 break,C#不允许从一个case进入下一个case,称为不可贯穿性,switch(待测试表达式)case value1:语句;break;case value2:语句;break;default:语句;break;,若没有任何一个 case 标记的值与表达式匹配,则转到 default 语句中;若没有定义default,则结束switch判断default 是可选的,但通常需要定义,以捕获没有被任何case 处理的值,其作用相当于 else。,switch(待测试表达式)case value1:语句;break;case value2:语句;break;default:语句;break;,DateTime today=DateTime.Now;DayOfWeek weekday=today.DayOfWeek;string str=;switch(weekday)case DayOfWeek.Monday:str=Dont speak to me!;break;case DayOfWeek.Friday:str=Anticipation.;break;default:str=Wondeful!;break;,使用 switch语句,练 习,C#语言的基本原理,内容:,C#程序的基本原理 C#预定义类型 编写表达式 条件语句 循环语句,C#,循 环 语 句 2.5,借助循环机制,编译器可以重复执行一块代码,直至满足某个条件为止,从而避免重复输入相同的代码行C#提供的循环机制有:for 循环 while 循环do 循环,for循环用于将代码块执行固定的次数语法:,for(初始化表达式;循环条件;迭代表达式)循环语句;,先执行初始化表达式,此部分只执行一次判断条件表达式,若满足条件则执行循环体;否则跳出for 循环每次循环语句执行完后要执行一次迭代,并重新判断循环条件示例:,for(int i=0;i 0;j-=10)Console.WriteLine(j=0,j);,与for 循环类似,也是预测试循环,即首先判断循环条件,若满足则执行循环;否则不执行语法:,while(循环条件)循环语句;,当不知道循环执行的次数时,可以使用while示例:,while(command!=“Exit”)doSomething();,先执行循环语句,再进行循环条件测试,所以循环语句至少执行一次,成为后测试循环语法:示例:,do 循环语句;while(循环条件);,int i=1;do Console.WriteLine(0,i+);while(i=10);,continue 关键字终止当次循环,开始下一次迭代和循环(并不终止整个循环)break 关键字跳出和终止整个循环示例:输出1,2,3,4,5,6,8,9,for(int i=1;i 10;i+)if(i=7)continue;Console.WriteLine(i);,练 习,参见教材P55页2.5.4 课堂练习,小 憩 片 刻,学 完 了就可以,我想,想,想,?,int m=10;int k=+m;/k=?,m=?如果换成int k=m+;/k=?,m=?(5个积分),1,2,C#的枚举类型功能强大,可以支持逻辑运算符(10个积分),