版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1.1系统技术栈介绍——C#编程基础C#中的变量C#中的运算符选择结构语句循环结构语句C#基本语法方法06数组07程序调试08知识回顾.NET基础知识;开发环境搭建;第一个C#程序;C#运行原理。学习目标通过本节学习:重点理解和掌握C#的变量、选择结构语句和循环结构语句。掌握C#的语法格式、运算符和方法。了解数组和程序调试。01C#基本语法思考题C#有什么语法格式?C#代码的基本格式C#代码的基本格式每一种编程语言都有一套自己的语法规范,C#语言也不例外,同样需要遵从一定的语法规范,如代码的书写、标识符的定义、关键字的应用等。定义类的格式[修饰符]class类名{程序代码}C#代码的基本格式注意事项在编写C#代码时,除了要遵从定义类的语法格式外,还需要特别注意以下几点,具体如下:C#中的程序代码可分为结构定义语句和功能执行语句,其中,结构定义语句用于声明一个类或方法,功能执行语句用于实现具体的功能。每条功能执行语句的最后都必须用分号(;)结束。C#语言是严格区分大小写的。在编写C#代码时,为了便于阅读,通常会使用一种良好的格式进行排版。总结:“;”、“大小写”、“格式”C#中的注释C#中的注释在编写程序时,为了使代码易于阅读,通常会在实现功能的同时为代码加一些注释。注释是对程序中某个功能或者某行代码的解释说明,在编译程序时编译器不会编译这些注释信息。intc=10;//定义一个整型变量注释类型单行注释:单行注释通常用于对程序中的某一行代码进行解释,用符号“//”表示,“//”后面为被注释的内容。总结:注释使用”//”C#中的注释C#中的注释多行注释:多行注释就是注释中的内容可以为多行,它以符号“/*”开头,以符号“*/”结尾。/*intc=1 0;intx=5;*////<summary>///在集合中添加元素///</summary>staticvoidAdd(){}多行注释:多行注释就是注释中的内容可以为多行,它以符号“/*”开头,以符号“*/”结尾。总结:注释使用”/*......*/”C#中的标识符C#中的标识符在编程过程中,经常需要在程序中定义一些符号来标记一些名称,如类名、方法名、参数名、变量名等,这些符号被称为标识符。标识符可以由任意顺序的大小写字母、数字、下划线(_)和@符号组成,但标识符不能以数字开头,且不能是C#中的关键字。//合法的标识符usernameusername123user_name_userName//不合法的标识符123usernameclass98.3HelloWorld以数字开头关键字以数字开头包含空格必须要严格遵守上面列出的规范,否则程序在编译时会报错C#中的标识符标识符规范为了增强代码的可读性,建议初学者在定义标识符时还应该遵循以下规范:类名、方法名和属性名中的每个单词的首字母要大写。例如Age。这种命名方式被称为大驼峰命名法或帕斯卡(Pascal)命名法字段名、变量名的首字母要小写,之后的每个单词的首字母均为大写。例如:age、userName。这种命名方式被称为小驼峰命名法。。常量名中的所有字母都大写,单词之间用下划线连接。例如:DAY_OF_MONTH。在程序中,应该尽量使用有意义的英文单词来定义标识符,使得程序便于阅读。例如使用userName表示用户名,password表示密码。C#中的关键字C#中的关键字关键字是编程语言中事先定义好并赋予了特殊含义的单词,也称作保留字。和其他语言一样,C#中保留了许多关键字。注意:1、所有的关键字都是小写的。
2、程序中的标识符不能以关键字命名。C#中的常量C#中的常量常量就是在程序中固定不变的值,是不能改变的数据。例如数字1、字符'a'、浮点数3.2等。常量类型整型常量:整型常量是整数类型的数据,有二进制、八进制、十进制和十六进制4种表示形式。二进制:由数字0和1组成的数字序列。如01000000、10000001。八进制:以0开头并且其后由0~7之间(包括0和7)的整数组成的数字序列,如:0342。十进制:数字0~9之间(包括0和9)的整数组成的数字序列。如:198。十六进制:以0x或者0X开头并且其后由0~9、A~F(包括0和9、A和F)组成的数字序列,如0x25AF。C#中的常量C#中的常量浮点数常量:就是在数学中用到的小数。浮点数常量的类型如下所示:float单精度浮点数:后面以F或f结尾。double双精度浮点数:后面以以D或d结尾。当在使用浮点数时也可以在结尾处不加任何的后缀,此时虚拟机会默认为double双精度浮点数。2e3f3.6d0f3.84d5.022e+23f字符常量:用于表示一个字符,一个字符常量要用一对英文半角格式的单引号('')引起来,他可以是英文字母、数字、标点符号以及由转义序列来表示的特殊字符。‘a’‘1’‘&''\r''\u0000'空白字符C#中的常量C#中的常量字符串常量:用于表示一串连续的字符,一个字符串常量要用一对英文半角格式的双引号(“”)引起来。"HelloWorld""123""Welcome\nXXX"""布尔常量:布尔常量即布尔型的两个值true和false,该常量用于区分一个事物的真与假。null常量:null常量只有一个值null,表示对象的引用为空。02C#中的变量变量的定义变量的定义程序运行期间,随时可能产生一些临时数据,应用程序会将这些数据保存在一些内存单元中,每个内存单元都用一个标识符来标识。这些内存单元我们称之为变量,定义的标识符就是变量名,内存单元中存储的数据就是变量的值。intx=0,y;y=x+3;变量的数据类型变量的数据类型C#是一门强类型的编程语言,他对变量的数据类型有严格的限定。在定义变量时必须声明变量的类型,在为变量赋值时必须赋予和变量同一种类型的值,否则程序会报错。变量的数据类型值类型引用类型变量的数据类型整数类型变量整数类型变量:用来存储整数数值,即没有小数部分的值。整数类型分类:字节型(byte)、短整型(short)、整型(int)和长整型(long)四种类型所占存储空间的大小以及取值范围:类型名占用空间取值范围byte8位(1个字节)-27~27-1short16位(2个字节)-215~215-1int32位(4个字节)-231~231-1long64位(8个字节)-263~263-1占用的内存大小变量的数据类型浮点数类型变量浮点数类型变量:用来存储小数数值。浮点数类型分类:单精度浮点数(float)、双精度浮点数(double),double型所表示的浮点数比float型更精确。两种浮点数所占存储空间的大小以及取值范围:类型名占用空间取值范围float32位(4个字节)1.4E-45~3.4E+38,-1.4E-45~-3.4E+38double64位(8个字节)4.9E-324~1.7E+308,-4.9E-324~-1.7E+308注意:在C#中,一个小数会被默认为double类型的值,因此在为一个float类型的变量赋值时需要注意一点,所赋值的后面一定要加上字母“F”(或者小写“f”);而为double类型的变量赋值时,可以在所赋值的后面加上字符“D”(或小写“d”),也可以不加。变量的数据类型字符类型变量字符类型变量:用于存储一个单一字符,在C#中用char表示。占用空间:C#中每个char类型的字符变量都会占用2个字节。符号:在给char类型的变量赋值时,需要用一对英文半角格式的单引号(‘’)把字符括起来,如‘a‘。charc='a';//为一个char类型的变量赋值字符'a'变量的数据类型布尔类型变量布尔类型变量:布尔类型变量用来存储布尔值,在C#中用bool表示,该类型的变量只有两个值,即true和false。boolflag=false; //声明一个bool类型的变量,初始值为falseflag=true; //改变flag变量的值为true变量的类型转换变量的类型转换在程序中,当把一种数据类型的值赋给另一种数据类型的变量时,需要进行数据类型转换。类型转换分类:自动类型转换和强制类型转换。自动类型转换:自动类型转换也叫隐式类型转换,指的是两种数据类型在转换的过程中不需要显式地进行声明。自动类型转换满足的条件:两种数据类型彼此兼容。目标类型的取值范围大于源类型的取值范围。变量的类型转换自动类型转换自动类型转换的三种条件:整数类型之间可以实现转换。整数类型转换为float类型。其他类型转换为double类型。
byteb=3;intx=b;//程序把byte类型的变量b转换成了int类型,无需特殊声明变量的类型转换变量的类型转换强制类型转换:也叫显式类型转换,指的是两种数据类型之间的转换需要进行显式地声明。强制类型转换满足的条件:当两种类型彼此不兼容,或者目标类型取值范围小于源类型时,自动类型转换无法进行,这时就需要进行强制类型转换。变量的类型转换强制类型转换usingSystem;namespaceProgram02{classProgram{staticvoidMain(string[]args){bytea;//定义byte类型的变量aintb=298;//定义int类型的变量ba=(byte)b;Console.WriteLine("b="+b);Console.WriteLine("a="+a);Console.ReadKey();}}}将int类型的变量b强制转换成byte类型,并复制给a变量的作用域变量的作用域变量需要在他的作用范围内才可以被使用,这个作用范围称为变量的作用域。程序中,变量一定会被定义在某一对大括号中,该大括号所包含的代码区域便是这个变量的作用域。一对大括号就是一个作用域,里作用域可以调用外作用域资源,外作用域不可调用里作用域资源。变量的类型转换强制类型转换classProgram{staticvoidMain(string[]args){intx=12;//定义了变量x{inty=96;//定义了变量yConsole.WriteLine("xis"+x);//访问变量xConsole.WriteLine("yis"+y);//访问变量y}y=x;//访问变量x,为变量y赋值Console.WriteLine("xis"+x);//访问变量xConsole.ReadKey();
}}x的作用域在红色大括号内y的作用域y的作用域外访问变量外y,会出现编译错误的提示将该行删除,再运行程序03C#的运算符C#中的运算符运算符算术运算符赋值运算符比较运算符逻辑运算符位运算符特点:处理四则运算的符号特点:将常量、变量或表达式的值赋给某一个变量特点:对两个数值或变量进行比较,其结果是一个布尔值特点:逻辑运算符用于对布尔型的数据进行操作,其结果仍是一个布尔型特点:专门针对数字0和1进行操作的算术运算符算术运算符运算符运算范例结果+正号+33-负号b=4;-b;-4+、-、*、/加、减、乘、除省略省略%取模(求余数)7%52++自增(前)a=2;b=++a;a=3;b=3;++自增(后)a=2;b=a++;a=3;b=2;--自减(前)a=2;b=--a;a=1;b=1;--自减(后)a=2;b=a--;a=1;b=2;算术运算符:用来处理四则运算的符号,这是最简单、最常用的运算符号。算术运算符及其用法:算术运算符算术运算符在进行自增(++)和自减(--)的运算时,如果运算符(++或--)放在操作数的前面则是先进行自增或自减运算,再进行其他运算。反之,如果运算符放在操作数的后面则是先进行其他运算再进行自增或自减运算。intnum1=1;intnum2=2;intres=num1+num2++;Console.WriteLine("num2="+num2);Console.WriteLine("res="+res);运算符++写在了变量num2的后面,属于先运算再自增,因此运行结果为:num2=3、res=3算术运算符算术运算符在进行除法运算时,当除数和被除数都为整数时,得到的结果也是一个整数。如果除法运算有小数参与,得到的结果会是一个小数。在进行取模(%)运算时,运算结果的正负取决于被模数(%左边的数)的符号,与模数(%右边的数)的符号无关。如:(-5)%3=-2,而5%(-3)=2。3500/1000*1000先执行除法运算3500/1000,得到结果为3,再乘以1000,因此运行结果为3000赋值运算符赋值运算符运算符运算范例结果=赋值a=3;b=2;a=3;b=2;+=加等于a=3;b=2;a+=b;a=5;b=2;-=减等于a=3;b=2;a-=b;a=1;b=2;*=乘等于a=3;b=2;a*=b;a=6;b=2;/=除等于a=3;b=2;a/=b;a=1;b=2;%=模等于a=3;b=2;a%=b;a=1;b=2;赋值运算符:将常量、变量或表达式的值赋给某一个变量。赋值运算符及其用法:赋值运算符赋值运算符在赋值过程中,运算顺序从右往左,将右边表达式的结果赋值给左边的变量。注意事项:在C#中可以通过一条赋值语句对多个变量进行赋值算术运算符除了“=”,其他的都是特殊的赋值运算符,以“+=”为例,x+=3就相当于x=x+3,首先会进行加法运算x+3,再将运算结果赋值给变量x。-=、*=、/=、%=赋值运算符都可依此类推。intx,y,z;//定义int类型变量x,y,zx=y=z=5;//同时为x,y,z三个变量赋值比较运算符比较运算符运算符运算范例结果==相等于4==3false!=不等于4!=3true<小于4<3false>大于4>3true<=小于等于4<=3false>=大于等于4>=3true比较运算符:用于对两个数值或变量进行比较,其结果是一个布尔值,即true或false。比较运算符及其用法:逻辑运算符逻辑运算符运算符运算范例结果&与true&truetrue|或false|truetrue^异或true^truefalse!非!falsetrue&&短路与true&&falsefalse||短路或true||falsetrue逻辑运算符:用于对布尔型的数据进行操作,其结果仍是一个布尔型。逻辑运算符及其用法:逻辑运算符逻辑运算符逻辑运算符运算过程中的细节:
逻辑运算符可以针对结果为布尔值的表达式进行运算。运算符“&”和“&&”都表示与操作,当且仅当运算符两边的操作数都为true时,其结果才为true,否则结果为false。使用“&”进行运算时,不论左边为true或者false,右边的表达式都会进行运算。如果使用“&&”进行运算,当左边为false时,右边的表达式不会进行运算,因此“&&”被称作短路与。运算符“|”和“||”都表示或操作,当运算符两边的操作数任何一边的值为true时,其结果为true,当两边的值都为false时,其结果才为false。同与操作类似,“||”表示短路或,当运算符“||”的左边为true时,右边的表达式不会进行运算。运算符“^”表示异或操作,当运算符两边的布尔值相同时(都为true或都为false),其结果为false。当两边布尔值不相同时,其结果为true。000位运算符000位运算符运算符运算范例结果&按位与0&10|按位或0|11~取反~01^按位异或0^11<<左移00000010<<200001000>>右移11100010>>211111000位运算符:是针对二进制数的每一位进行运算的符号,他是专门针对数字0和1进行操作的。位运算符
及其用法:运算符的优先级运算符的优先级优先级运算符1.[]()2++--~!(数据类型)3*/%4+-5<<>>>>>6<><=>=7==!=在对一些比较复杂的表达式进行运算时,要明确表达式中所有运算符参与运算的先后顺序,我们把这种顺序称作运算符的优先级。运算符的优先级:优先级运算符8&9++--~!10&11|12&&13?:(三元运算符)14=*=/=%=+=-=<<=>>=>>>=&=^=|=04选择结构语句思考题C#中的条件语句有哪些,特点是什么?If条件语句if条件语句选择语句:需要对一些条件作出判断,从而决定执行哪一段代码。选择语句分为if条件语句和switch条件语句。if条件语句的语法格式分为3种:if语句:if语句是指如果满足某种条件,就进行某种处理。if(条件语句){
代码块}当条件语句为true时,执行代码块,否则不执行if语句的语法格式:if语句的执行流程:条件语句if条件语句namespaceProgram06{classProgram{staticvoidMain(string[]args){//声明变量x作为判断依据intx=5;//如果x的值小于10则执行if大括号中的代码if(x<10){x++;}Console.WriteLine("x="+x);Console.ReadKey();}}}5<10,因此条件成立,执行x++If…else条件语句if…else条件语句if…else语句:是指如果满足某种条件,就进行某种处理,否则就进行另一种处理。
if(判断条件){
执行语句1 ……}else{
执行语句2 ……}当判断条件为true时,执行“执行语句1”,否则,执行“执行语句2”if…else语句的语法格式:if条件语句的执行流程:If…else条件语句namespaceProgram07{classProgram{staticvoidMain(string[]args){intnum=19;if(num%2==0){//判断条件成立,num被2整除Console.WriteLine("num是一个偶数");}else{Console.WriteLine("num是一个奇数");}Console.ReadKey();}}}19模以2的结果为1,判断条件不成立。因此会执行else后面{}中的语句if…else条件语句If…elseif…else条件语句If…elseif…else条件语句if…elseif…else语句:用于对多个条件进行判断,进行多种不同的处理。
if(判断条件1){
执行语句1}elseif(判断条件2){
执行语句2}...elseif(判断条件n){
执行语句n}else{
执行语句n+1}当判断条件1为true时,执行“执行语句1”,否则,判断“判断条件2”是否为true,否则,判断“判断条件3”是否为true,依次类推if…elseif…else语句的语法格式:if条件语句的执行流程:If…elseif…else条件语句staticvoidMain(string[]args){intgrade=75;//定义学生成绩if(grade>=80){Console.WriteLine("该成绩的等级为优");}elseif(grade>=70){Console.WriteLine("该成绩的等级为良");}elseif(grade>=60){Console.WriteLine("该成绩的等级为中");}else{Console.WriteLine("该成绩的等级为差");}Console.ReadKey();}成绩大于等于80执行成绩大于等于70小于80时执行成绩大于等于60小于70时执行小于60时执行If…elseif…else条件语句三元运算符多学一招——三元运算符三元运算符的作用和if-else语句类似。语法格式如下:
判断条件?表达式1:表达式2intx=0;inty=1;intmax;if(x>y){max=x;}else{max=y;}获取最大值if..else语句:获取最大值三元云算符:intx=0;inty=1;intmax;max=x>y?x:y;Switch条件语句switch条件语句switch条件语句也是一种很常用的选择语句,他针对某个表达式的值作出判断,从而决定程序执行哪一段代码。switch语句的具体格式:switch(表达式){
case目标值1:
执行语句1
break;........case目标值n:
执行语句n
break;default:
执行语句n+1 break;}表达式的值与case语句中的目标值匹配如果与表达式的值匹配,则执行“执行语句n”跳出switch语句,不再执行switch中的语句如果没找到任何匹配的值,就会执行default后的语句Switch条件语句switch条件语句staticvoidMain(string[]args){intweek=5;switch(week){case1:…….case5:Console.WriteLine(“星期五");break;……}Console.ReadKey();}表达式的值为5表达式5匹配到的目标值在控制台输出“星期五”05循环结构语句思考题C#中的循环语句有哪些,特点是什么?While循环语句while循环语句循环语句:在C#中有一种可以重复执行同一代码块的语句。循环语句分为while循环语句、do…while循环语句和for循环语句。while循环语句:反复地根据条件判断来决定是否执行大括号内的执行语句。while(循环条件){执行语句………}条件成立,则执行“执行语句”,反复的判断循环条件,直到不满足条件时,结束while循环while的语法结构:while执行流程:While循环语句while循环语句usingSystem;namespaceProgram11{classProgram{staticvoidMain(string[]args){intx=1;//定义变量x,初始值为1while(x<=4){//循环条件Console.WriteLine("x="+x);//条件成立,打印x的值x++;}Console.ReadKey();}}}1小于4,执行循环体x进行自增x等于2,小于4,执行循环体x进行自增x等于3,小于4,执行循环体x进行自增x等于4,执行循环体x进行自增x等于5,小于4,条件不成立,结束while循环Do…while循环语句do…while循环语句do…while循环语句和while循环语句功能类似,二者的不同之处在于,while语句需要先判断循环条件,然后根据循环条件的结果来决定是否执行大括号中的代码,而do…while循环语句先要执行一次大括号内的代码再判断循环条件。do{执行语句………}while(循环条件);do…while的语法结构:while执行流程:循环体无论循环条件是否成立,循环体都执行一次Do…while循环语句do…while循环语句usingSystem;namespaceProgram12{classProgram{staticvoidMain(string[]args){intx=1;//定义变量x,初始值为1do{Console.WriteLine("x="+x);//打印x的值x++;//将x的值自增}while(x<=4);//循环条件Console.ReadKey();}}}首先执行循环体,x进行自增然后判断循环条件是否成立,x为2,条件成立,再次执行循环体For循环语句for循环语句for循环:通常用于循环次数已知的情况。for(初始化表达式;循环条件;操作表达式){
执行语句
………}for循环的语法结构:循环体分别用①表示初始化表达式、②表示循环条件、③表示操作表达式、④表示循环体,通过序号来具体分析for循环的执行流程。For循环语句for循环语句for(①;②;③){ ④}第一步,执行①第二步,执行②,如果判断结果为true,执行第三步,如果判断结果为false,执行第五步第三步,执行④第四步,执行③,然后继续执行第二步第五步,退出循环For循环语句for循环语句usingSystem;namespaceProgram13{classProgram{staticvoidMain(string[]args){intsum=0;//定义变量sum,用于记住累加的和for(inti=1;i<=4;i++){//i的值会在1~4之间变化sum+=i;//实现sum与i的累加}Console.WriteLine("sum="+sum);//打印累加的和Console.ReadKey();}}}i=1,并且i小于4,条件成立,执行循环体首先执行i++,i=2,i小于4,执行循环体然后再次执行i++,i=3,i小于4,执行循环体,按照这样的步骤执行代码,直到i大于4,结束循环跳转语句跳转语句跳转语句:用于实现循环执行过程中程序流程的跳转。包括break语句、goto语句和continue语句。break语句使用在switch条件语句和循环语句。switch条件语句:终止某个case并跳出switch结构。循环语句:跳出当前循环语句,执行后面的代码。当break语句出现在嵌套循环中的内层循环时,他只能跳出内层循环goto语句:当在嵌套循环中首先需要对外层循环添加标记,然后使用goto语句跳出外层循环。continue语句:终止本次循环,并执行下一次循环。跳转语句跳转语句——breakclassProgram{staticvoidMain(string[]args){intx=1;//定义变量x,初始值为1while(x<=4){//循环条件Console.WriteLine("x="+x);//条件成立,打印x的值if(x==3){break;}x++;//x进行自增}Console.ReadKey();}}当x==3时,执行break语句,跳出while循环,结束循环跳转语句跳转语句——gotostaticvoidMain(string[]args){inti,j;//定义两个循环变量for(i=1;i<=9;i++){//外层循环for(j=1;j<=i;j++){//内层循环if(i>4){//判断i的值是否大于4gotoend;}Console.Write("*");//输出*}Console.WriteLine();//换行}end:Console.ReadKey();}跳转到end标识的语句执行该语句跳转语句跳转语句——continueclassProgram{staticvoidMain(string[]args){intsum=0;//定义变量sum,用于记住和for(inti=1;i<=100;i++){if(i%2==0){//如果i是一个偶数,执行if语句中的代码continue;}sum+=i;//实现sum和i的累加}Console.WriteLine("sum="+sum);Console.ReadKey();}}结束本次循环,即不执行sum+=i;语句,直接进入下次循环中循环嵌套循环嵌套循环嵌套:在一个循环中嵌套一个循环。最常见的嵌套循环为for循环中嵌套for循环。for循环中嵌套for循环的语法格式:for(初始化表达式;循环条件;操作表达式){………for(初始化表达式;循环条件;操作表达式){执行语句
………}………}外层循环内层循环循环嵌套循环嵌套namespaceProgram17{classProgram{staticvoidMain(string[]args){inti,j;//定义两个循环变量for(i=1;i<=9;i++){//外层循环for(j=1;j<=i;j++){//内层循环Console.Write("*");//打印*}Console.WriteLine();//换行}Console.ReadKey();}}}外层循环控制行数内层循环控制在一行中打印*的个数06方法什么是方法什么是方法在程序中,将可以完成一定特定功能的代码段提出来用一个方法来表示。例如一个段求两个数之和代码,我们可以用以Add()方法来表示,需要求和时,只需调用Add()方法即可。方法的语法格式:[修饰符]返回值类型方法名([[参数类型参数名1],[参数类型参数名2],……]){
方法体 return返回值;}可选,修饰符可以省略,可以用于对访问权限进行限定,如private,也可使用静态修饰符static描述方法返回值的数据类型方法名使用变量的命名规则中的帕斯卡命名规范用于结束方法以及返回方法指定类型的值被return语句返回的值,该值会返回给调用者用于限定调用方法时传入参数的数据类型用于接收调用方法时传入的数据什么是方法什么是方法classProgram{staticvoidMain(string[]args){……intproduct=Multiply(3,5);Console.WriteLine("num1*num2="+product);Console.ReadKey();}……//定义两个数相乘的方法publicstaticintMultiply(intnum1,intnum2){intsum=num1*num2;returnsum;}}在Main()中调用Multiply()方法方法的重载方法的重载C#中允许在一个程序中定义多个同名方法,但是参数的类型或个数必须不同,这种方式被称作方法的重载。重载的条件:方法名相同。参数个数或参数类型不相同。需要注意的是:方法的重载与返回值类型无关。方法的重载方法的重载//下面的方法实现了两个整数相加publicstaticintAdd(intx,inty){returnx+y;}//下面的方法实现了三个整数相加publicstaticintAdd(intx,inty,intz){returnx+y+z;}//下面的方法实现了两个小数相加publicstaticdoubleAdd(doublex,doubley){returnx+y;}Add()方法中有两个int型的参数,返回值为int型Add()方法中有三个int型的参数,返回值为int型Add()方法中有三个double型的参数,返回值为double型方法的重载多学一招——快速判断方法重载快速判断方法重载:将方法名前面的修饰符、返回类型以及方法体去掉。将方法参数列表中的参数名去掉。将两个方法做比较,首先名称不相同一定不是重载方法,其次如果名称相同,其他部分不相同的构成重载,相同的则不是重载的方法。
publicstaticintFunc(intnum){…} //方法1publicstaticboolFunc(intnum1,intnum2){…} //方法2publicstaticstringFunc(strings1,strings2){…} //方法3publicstaticstringFunc(strings2,strings1){…} //方法4 Func(intnum) //方法1 Func(intnum1,intnum2) //方法2 Func(strings1,strings2) //方法3 Func(strings2,strings1) //方法4
Func(int) //方法1 Func(int,int) //方法2 Func(string,string) //方法3 Func(string,string) //方法4
方法的重载方法的重载namespaceProgram19{classProgram{staticvoidMain(string[]args){Console.WriteLine("-2的绝对值={0}",Math.Abs(-2));
Console.WriteLine("-2的3次方={0}",Math.Pow(-2,3));
Console.WriteLine("sin(0°)={0}",Math.Sin(0));
Console.WriteLine("cos(0°)={0}",Math.Cos(0));
Console.ReadKey();}}}求0°的余弦值求-2的绝对值求-2的3次方求0°的正弦值07数组数组的定义数组的定义数组中的元素会被自动赋予一个默认值,根据元素类型的不同,默认初始化的值也是不同的。数组中元素的默认初始化值:数据类型默认初始化值byte、short、int、long0float、double0.0char一个空字符,即’\u0000’boolfalse引用类型null,表示变量不引用任何对象数组的定义数组的定义为了更好地理解数组的这种定义方式,我们将定义和赋值分开来定义:int[]x; //声明一个int[]类型的变量xx=newint[100]; //创建一个长度为100的数组
数组定义的内存状态:声明变量x的内存状态:创建数组时的内存状态:数组的定义数组的定义usingSystem;namespaceProgram22{classProgram{staticvoidMain(string[]args){int[]arr; arr=newint[3];Console.WriteLine("arr[0]="+arr[0]); //访问数组中的第一个元素Console.WriteLine("arr[1]="+arr[1]); //访问数组中的第二个元素Console.WriteLine("arr[2]="+arr[2]); //访问数组中的第三个元素Console.WriteLine("数组的长度是:"+arr.Length);//打印数组长度Console.ReadKey();}}}声明int型数组变量arr创建数组对象通过Length属性获取数组的长度数组的定义数组的定义数组是指一组数据的集合,数组中的每个数据被称作元素。在数组中可以存放任意类型的元素,但同一个数组里存放的元素类型必须一致。数组类型:一维数组和多维数组。数组的定义:int[]数组名=newint[数组的长度];
int[]数组名=newint[100];
定义一个长度为100的int型数组数组的定义数组的定义classProgram{staticvoidMain(string[]args){int[]arr=newint[4];//定义可以存储4个整数的数组arr[0]=1;//为第1个元素赋值1arr[1]=2;//为第2个元素赋值2//下面的代码是打印数组中每个元素的值Console.WriteLine("arr[0]="+arr[0]);Console.WriteLine("arr[1]="+arr[1]);Console.WriteLine("arr[2]="+arr[2]);Console.WriteLine("arr[3]="+arr[3]);Console.ReadKey();}}获取数组中的值,数组中第3、4角标中的值没有赋予数组的定义数组的定义动态初始化:在定义数组时只指定数组的长度,由系统自动为元素赋初值的方式。静态初始化:定义数组的同时就为数组的每个元素赋值。数组的静态初始化有两种方式:上述的两种方式都可以实现数组的静态初始化,但是为了简便,建议采用第二种方式。1、类型[]数组名=new类型[]{元素,元素,……};2、类型[]数组名={元素,元素,元素,……};
数组的常见操作遍历数组数组的遍历:依次访问数组中的每个元素。namespaceProgram27{classProgram{staticvoidMain(string[]args){int[]arr={1,2,3,4,5};//定义数组//使用for循环遍历数组的元素for(inti=0;i<arr.Length;i++){Console.WriteLine(arr[i]);//通过索引访问元素}Console.ReadKey();}}}数组的常见操作数组最值在操作数组时,经常需要获取数组中元素的最值。staticintGetMax(int[]arr){intmax=arr[0];//下面通过一个for循环遍历数组中的元素for(intx=1;x<arr.Length;x++){if(arr[x]>max){//比较arr[x]的值是否大于maxmax=arr[x];//条件成立,将arr[x]的值赋给max}}returnmax;}数组的常见操作冒泡排序冒泡排序:不断地比较数组中相邻的两个元素,较小者向上浮,较大者往下沉,整个过程和水中气泡上升的原理相似。。冒泡排序的过程:第一步,从第一个元素开始,将相邻的两个元素依次进行比较,直到最后两个元素完成比较。如果前一个元素比后一个元素大,则交换他们的位置。整个过程完成后,数组中最后一个元素自然就是最大值,这样也就完成了第一轮比较。第二步,除了最后一个元素,将剩余的元素继续进行两两比较,过程与第一步相似,这样就可以将数组中第二大的数放在倒数第二个位置。第三步,以此类推,持续对越来越少的元素进行两两比较,直到没有任何一对元素需要比较为止。数组的常见操作冒泡排序//定义对数组排序的方法publicstaticvoidBubbleSort(int[]arr){for(inti=0;i<arr.Length-1;i++){for(intj=0;j<arr.Length-i-1;j++){if(arr[j]>arr[j+1]){//比较相邻元素inttemp=arr[j];arr[j]=arr[j+1];arr[j+1]=temp;}}Console.Write(“第”+(i+1)+“轮排序后:”);}}外层循环,用来控制进行多少轮比较内层循环,控制每轮比较的次数比较相邻元素,如果前者小于后者,就交换两个元素的位置数组的常见操作冒泡排序冒泡排序具体执行过程:多维数组多维数组多维数组:在数组中嵌套数组。在程序中比较常见的就是二维数组。二维数组语法格式如下:在定义数组时,直接对数组中的元素进行初始化的两种方式:int[,]arr=newint[3,4]; 1、int[,]arr=newint[3,4]{{1,2,3,4},{1,2,3,4},{1,2,3,4}};2、int[,]arr={{1,2,3,4},{1,2,3,4},{1,2,3,4}};
二维数组的定义数组的定义staticvoidMain(string[]args){//定义二维数组arr并赋值int[,]arr=newint[3,4]{{1,2,3,4},{2,3,3,4},{3,4,3,4}};intsum=0;//定义变量记录总销售额for(inti=0;i<arr.GetLength(0);i++){//遍历数组元素intgroupSum=0;//定义变量记录小组销售总额//遍历小组内每个人的销售额for(intj=0;j<arr.GetLength(1);j++){groupSum=groupSum+arr[i,j];}sum=sum+groupSum;//累加小组销售额 ……}}获取i行j列的元素08程序调试设置断点设置断点在程序的调试过程中,需要对程序中某些数据的变化情况进行观察,才能分析出程序出错的原因,这时就需要为程序设置断点。断点可以让正在运行的程序在需要的地方中断,当再次运行程序时,程序会在断点处暂停,方便观察程序中的数据。添加断点的三种方式:左击代码左边的灰色区域即可,断点插入成功后左侧会有彩色圆点出现,并且插入断点后的代码会高亮显示。在某行代码处右击鼠标,在弹出的快捷菜单中,选择“断点”选项,然后选择“插入断点”即可。使用快捷键“F9”设置断点。删除断点删除断点删除断点:左击代码左侧已插入的彩色圆点,即可删除断点。在断点上右击选择【删除断点】选项。删除所有断点,快捷组合键“Ctrl+Shift+F9”。启动调试会话、检查变量与表达式启动调试会话、检查变量与表达式启动调试会话:通过单击“调试”菜单中的“开始调试”按钮(或按下F5键),启动调试会话。在调试会话中,程序将在断点处中断执行。检查变量与表达式:当程序在断点处中断时,可以使用“自动窗口”、“局部窗口”、“监视窗口”等工具来检查变量的值、执行表达式等。这些窗口可以帮助您理解程序的执行状态和数据。单步调试单步调试单步调试:当程序出现Bug时,通常采用的是一步一步跟踪程序执行的流程,根据变量的值,找到错误的原因的方法。单步调试分为逐语句(快捷键F11)和逐过程(快捷建F10)。逐语句调试会进入方法内部调试,单步执行方法体中的每一行代码,逐过程调试不会进入方法体内部,而是把方法当做一行代码来执行。开启单步调试:在代码中设置断点后,在工具栏中选择Debug模式,并单击按钮,开启程序调试功能。单步调试单步调试单步调试的界面:单步调试单步调试调试按钮:调试按钮的作用:全部中断:该按钮可以将正在执行的程序全部中断,快捷建Ctrl+Alt+Break。停止调试:该按钮用于停止调试程序,快捷建Shift+F5。重新启动:该按钮用于重新启动程序调试,快捷键Ctrl+Shift+F5。显示下一条语句:该按钮用于显示下一条执行的语句,快捷键Alt+数字键*。逐语句:该按钮可以让程序按照逐语句进行调试,快捷键F11。逐过程:该按钮可以让程序按照逐过程进行调试,快捷键F10。跳出:该按钮用于跳出正在执行的程序,快捷键Shift+F11。单步调试单步调试当使用逐语句和逐过程按钮进行单步调试,调试信息会显示在自动窗口、局部变量和监视的窗口,具体信息如下:自动窗口:自动根据当前选中对象显示其调试信息。局部变量窗口:只显示当前帧的局部变量信息。监视1窗口:检索用户自己添加的变量信息。观察变量观察变量观察变量值的方法:使用自动窗口查看变量的值。使用局部变量窗口查看变量的值使用鼠标悬停的办法监视变量的值使用监视1窗口查看变量的值使用即时窗口查看变量的值条件断点条件断点条件断点可以快速定位到需要调试的循环次数。使用条件断点调试程序的步骤如下所示:首先为需要中断的代码添加断点,然后右击断点,在弹出框中单击【条件(C)】按钮。勾选条件选项,将条件表达式的值设置为true,设置中断表达式设置为,此时设置断点完毕,启动调试,练习✎本章练习请简要说明&&与&的区别。请说明while循环与for循环的异同。✎预习练习简述面向对象的概念。本章小节本章主要介绍了学习C#语言所需的基础知识,包括:介绍了C#语言的基本语法、常量、变量的定义;介绍了常见运算符的使用;介绍了条件选择语句和循环结构语句的概念和使用;介绍了方法和数组的使用;介绍了程序调试。通过本章的学习,能够掌握C#语言的基本语法、变量和运算符、流程控制语句、方法、数组和程序调试的使用。1.1.6面向对象基础深圳市信息职业技术学院面向对象的概念01目
录类与对象02访问修饰符03构造函数04this关键字0506070809垃圾回收static关键字嵌套类匿名类对象初始化0710知识回顾C#基本语法C#中的变量C#中的运算符选择结构语句循环结构语句方法数组程序调试学习目标通过本节学习可以:重点学习类的定义及对象重点学习构造方法重点学习this和static关键字掌握面向对象的概念掌握访问修饰符掌握垃圾回收了解嵌套类了解匿名类了解对象初始化器01面向对象的概念思考题面向对象有哪些特征?面向对象的概念面向对象的概念面向对象(Object-OrientedProgramming,简称OOP)是一种编程范式,它以对象作为程序的基本单元,通过对象之间的交互来实现程序的逻辑和功能。面向对象思想有三大特征:封装性、继承性和多态性。封装性:面向对象的核心思想,他将对象的特征和行为封装起来,不需要让外界知道具体实现细节,这就是封装思想。继承性主要描述的是类与类之间的关系,通过继承,可以在无需重新编写原有类的情况下,对原有类的功能进行扩展。多态性指的是同一操作用于不同的对象,会产生不同的执行结果。02类与对象思考题类的成员有哪些?怎么访问类的成员?类与对象类与对象类是对某一类事物的抽象描述。对象用于表示现实中该类事物的个体。类与对象之间的关系:类对象类与对象-类的定义类的定义在面向对象的思想中最核心的就是对象,为了在程序中创建对象,首先需要定义一个类。类是对象的抽象,他用于描述一组对象的共同特征和行为。类中可以定义字段和方法,其中字段用于描述对象的特征,方法用于描述对象的行为。定义类时需要使用到“class”关键字声明。类与对象-类的定义类的定义
usingSystem;namespaceProgrom01{publicclassPerson{//定义Person类,public为访问修饰符publicintage;//定义int类型的字段agepublicvoidSpeak(){//定义Speak()方法Console.WriteLine("大家好,我今年"+age+"岁!");}}}class关键字声明Person类类与对象-对象的创建与使用对象的创建与使用创建对象:通过new关键字来实现。创建对象的格式:类名对象名称=new类名();变量p和对象之间的引用关系Personp=newPerson();创建Person对象Person类型的变量P创建Person对象类与对象-对象的创建与使用对象的创建与使用namespaceProgrom01{classProgram{staticvoidMain(string[]args){Personp1=newPerson();//创建第一个Person对象Personp2=newPerson();//创建第二个Person对象p1.age=18;//为age字段赋值p1.Speak();//调用对象的方法p2.Speak();Console.ReadKey();}}}调用对象中的成员类与对象-对象的创建与使用对象的创建与使用p1和p2变量引用的对象在内存中的状态。类与对象-对象的创建与使用对象的创建与使用在实例化对象时,程序会自动为类中的字段进行初始化默认值,针对不同类型的字段,会赋予不同的初始值。不同类型字段的默认初始值字段类型初始值byte0short0int0long0LDemical0.0M字段类型初始值double0.0Dchar'\0'booleanfalse引用数据类型null类与对象-对象的创建与使用对象的创建与使用classProgram{staticvoidMain(string[]args){Personp2=newPerson();//创建p2对象p2.Say();//调用Say()方法p2=null;p2.Say();Console.ReadKey();}}publicclassPerson{publicvoidSay(){//创建Say()方法,输出一句话Console.WriteLine("Welcometoitcast!");}P2为null,不能引用Person类中的Say()方法,程序会抛出异常将p2对象设置为null,表示该p2变量不指向任何一个对象类与对象-对象的创建与使用对象的创建与使用对象成为垃圾的过程。类与对
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年度合同管理部职责拓展与风险防控方案
- 二零二四年定制化家庭清洁服务合同书3篇
- 二零二四年度智能生产线承包与技术服务合同3篇
- 2025年度临时工劳动关系解除及补偿合同
- 2025年度国际金融衍生品交易合同审核指引
- 2025年度船舶建造与船员培训合同范本4篇
- 2025年度路面混凝土施工进度调整与变更合同范本4篇
- 2025年国际贸易争议解决合同模板
- 2025年度环保材料供应链管理合同
- 2025年度数据中心合同分包协议书模板
- 二零二五版电力设施维修保养合同协议3篇
- 最经典净水厂施工组织设计
- VDA6.3过程审核报告
- 2024年湖南商务职业技术学院单招职业适应性测试题库带答案
- 骨科手术中常被忽略的操作课件
- 2024年全国各地中考试题分类汇编:作文题目
- 《糖拌西红柿 》 教案()
- 弹性力学数值方法:解析法:弹性力学中的变分原理
- 河南省邓州市2023-2024学年八年级上学期期末语文试题
- 网络舆情应对处置培训课件
- 物流服务项目的投标书
评论
0/150
提交评论