今天学习的第一句话:Console.WriteLine(“你想显示的内容。”);第二句话:Console.ReadKey();当程序执行到Console.ReadKey();时,程序会停到这里,等待用户从键盘上键入一个键,用户键入这个键之后,程序才会继续执行。在C#中,每一句话都必须以“分号”结束C#中的注释,什么是注释呢?对我程序进行的解释,注释是给人看的。下面的一对指示可以折叠代码。#region内容#endregionMSIL:微软中间语言MicrosoftIntermediateLanguageCLR:公共语言运行时CommonLanguageRuntimeCLS公共语言规范CommonLanguageSpecificationCTS:通用类型系统CommonTypeSystemJIT:即时编译器JustInTime第二天课程:复习--Console.WriteLine()可以用CW加Tab键。这样就能直接打出Console.WriteLine();变量1:变量:变量代表着一块内存空间,我们可以通过变量名称向内存存\取数据。有变量就不需要我们记忆复杂的内存地址。向内存申请一块内存空间的语法:数据类型变量名;整数在我们C#中的数据类型叫intIntnuber;预定义类型简单类型非数值类型boolchar数值类型整数类型8-Bitsbytebyte16-Bitshortushort32-Bitintuint64-Bitlongulong浮点类型decimalfloatdoubleobjectstringDouble:小数Char:字符型只能存储一个字符,并且存储的这个字符要求用单引号引起来String类型:字符串,就是把0个或1个或多个字符连接起来。字符串要求用双引号引起来。Decimal类型:用来表示钱和货币,失精度不至于丢失。注意:在C#开发环境中,直接写一个有小数点的数字,这个数字是double类型。在一个小数后面加个m\M,就告诉编译器这是个decimal类型应该写成:money=100.34m;变量的命名规则:1.必须以“字母”_或@符号开头、2.后面可以跟任意“字母”,数字,下划线。注意:1.你起的变量名不要与C#系统中的关键字重复。2.在C#中,大小写是敏感的。3.同一个变量名不允许重复定义(先这么认为,不严谨)。定义变量时,变量名要有意义C#变量名编码规范---Camel命名法:首个单词的首字母小写,其余单词的首字母大写。Pascal命名规范:每一个单词第一个字母都大写。如果使用到英文单词的缩写,全部用大写。在一个方法中,一般情况下变量只能定义一次(先这么认为),但可以多此赋值,再次赋值时,会把变量中原有的值给覆盖掉。“+”在C#中有两种意义:1.在数学中的加法运算:两边参与加法运算的数据类型为数字类型,则“+“表示数学上的加法意义。2.是连接的意思:两边参与加号运算的数据,有一个是字符类型,那么这个“+“好就是连接的意义。在Console.WritLine(“”)中,第一个变量/字符串中可以使用占位符。占位符有{数字}组成,数字有0开始编号第1个占位符:{0}第2个占位符:{1}第3个占位符:{2}………Console.WriteLine();用逗号分隔,每个逗号前都是一个参数,有多个参数时,输出都是第一个参数中的内容,从第二个参数开始都是用来替换第一个参数中的占位符的值,所以从第二个参数开始,要不要输出,就要看第一个参数中有没有相关的占位符。例如:Console.WriteLine(”{0}我叫”+name,”今年”+age+”岁了”);输出结果是:今年28岁了我叫张三再学习一句话,用于让用户从键盘上输入一句话。当程序执行到线面这句话,就会暂停,然后等待用户从键盘上输入一句,按回车程序将继续执行。如果想得到用户输入的的内容,就需要定义一个string类型的变量,写在下面这句话前面,接收用户输入的内容。Console.ReadLine();接收用户输入的内容,必须定义一个字符串来进行接收。Stringinput=Console.ReadLine();转义字符:什么时候用,当我们需要在字符串中输入一些特殊字符时,比如:半角引号,换行,退格。就需要使用转义字符。转义字符是一个字符,他由一个\+一个字母来组成具有特殊意义的一个字符。常用的转义字符:\n换行\bbackspace退格\ttab键由多个空格组成的一个字符,具有行与行之间的对齐功能。\\表示一个\在字符串前面加一个@符号有两种意义:1.字符串中如果有\,则不再理解为转义符。2.使字符串可以换行如果字符串前面加了@符号,在字符串上用连个双引号代表一个双引号。C#中,有五个算术运算符:+-*/%他们二元运算符。要求参与运算的两个操作数的类型必须相同,并且经过运算后的结果也与操作数的类型相同。在算术表达式中,如果要改变计算的优先级,用小括号。小括号可以无限制的套用,但一定要成对出现。发生自动转换的条件:1.参与运算(算术运算和赋值运算)的操作数和结果类型必须一致。当不一致时,满足下面条件时,系统自动完成类型转换。2.两种类型兼容3.例如:int和double兼容4.目标类型大于源类型5.例如:doubleint自动转换中,转换是不会丢失进度的。经常见到的就是,参与运算的两个操作数,一个是int,一个是double,那么int类型会自动转换乘double如果一个操作数为double型,则整个表达式的运算结果为double类型。当需要丢失精度的转换(如果从double3.14到int3的转换,会丢失0.14的精度)时,系统是不会帮我们自动转换的。需要我们程序员来写代码完成转换。(数据类型名)待转换的值;注意:下面的两种转换是错误的。因为强制类型转换要求待转换的类型和目标类型必须都为数字。//stringage=(int)Console.ReadLine;//inta=(int)“33”;Int变量=Convert.ToInt32(待转字符串);上面语句的意义:把待转字符串转换成int类型后赋给变量。C#中的异常捕获如何完成:Try{有可能出现错误的代码写在这里}Catch{出错后的处理}上面的程序如何执行:如果try中的代码没有出错,则程序正常运行try中的内容后,不会执行catch中的内容。如果try中的代码一旦出错,程序立即跳出catch中去执行代码,那么try的出错代码后面的代码不再执行。Age++自加一有前加和后加Age--自减一有前减和后减例如:Intage=18;Intsum=age++-10;上面代码age是后加。所以在进行语句运算时,age++取age原值参与运算,所以sum=8Intage=18;Intsum=++age-10;上面age是前加,所以在进行语法运算时—++age取age加一后的新值参与运算,所以sum=9总之,不管是++age还是,进过运算后,agede值都进行了+1运算。Intage=18;Intsum=age++-10;相当于:Intage=18;Intsum=age-10Age=age+1Intage=18;Intsum=++age-10;相当于:Intage=18;Age=age+1;Intsum=age-10;在C#中,一般情况下,一元运算符++--大于二元运算符+-。复合运算符:Age+=4理解为在Age的原值的基础上加4;在C#中,有6个关系运算符,用于比较两个事物之间的关系。==!===关于表达式:由关系运算符连接起来的式子。关系表达式的运算结果bool类型,bool类型只有连个值,一个是true,一个是false.如果关于运算表达式成立,则这个表达式的值为true,否则为false。逻辑运算符:&&||!逻辑与运算:BoolisRight=表达式1&&表达式2逻辑与连接的两个表达式,要能够求解成bool类型,一般情况都是关系表达式。整个逻辑与运算的结束也是bool类型表达式1表达式2逻辑与结果TrueTrueTrueTruefalsefalsefalseTrueFalsefalsefalseFalse两个表达式全为true,逻辑与才为true逻辑或(或者):BoolisRight=表达式1||表达式2逻辑与连接的两个表达式,要能够求解成bool类型,一般情况都是关系表达式。整个逻辑与运算的结束也是bool类型表达式1表达式2逻辑或结果TrueTrueTrueTruefalseTruefalseTrueTruefalsefalseFalse有一个表达式为true,逻辑或就为true逻辑非:!(取反)这是一个一元运算符。用法:!(布尔类型的表达式)作用:如果布尔类型的表达式为true,加!号后,其整个式子的结果为false。如果:布尔类型的表达式为false,加!号后,其整个式子的结果为true。逻辑与与逻辑或的短路问题:例如:Inta=10;Intb=5;(1)Boolresult=++a5&&++b1;(2)Boolresult=++a5||++b1;当逻辑与第一为假时第二个不再检查真假,直接输出false。第二个不再运算。当逻辑或第一个为真时。第二个表达式不再检查真假。直接输出true。第二个数不再运算。If结构的基本语法:If(条件)1.语句;执行过程:首先判断条件的结果,如果条件为true,则执行语句。如果条件为false,则跳过语句1.执行后面的语句。注意:1.if后面的括号中的条件,要能计算成一个bool类型的值。3.默认情况下,if语句只能待一句话。即和if语句有关系的语句,只有语句1.执行过程:如果条件为false,那么将跳过if所带的语句块中的所有语句。要求:我们在写程序时,哪怕if语句只带一句话,也要把他写在大括号中。If-else结构语法:If(条件){语句1;}Else{语句2;}执行过程:如果条件为true,则执行if带的语句块1,并且跳过else带的语句块2.如果条件为false,则跳过if带的语句块1,执行else带的语句块2.上面两个语句块,根据条件结束为true或false,总要执行一个。在if-elseif语句中。只有当上一个条件不成立时,才会进入下一个if语句并进行if语句后面的条件判断。一旦有一个if后面的条件为true,则执行if所带的语句(块),语句(块)执行完成后,程序跳出if-elseif结构。如果所有的if条件都不成立,则如果最后有else则执行else所带的语句,否则什么都不执行。注意:代码自动排版对齐快捷键:Ctrl+k+fElse离它最近的if是一对Switch-case语句:语法:Switch(表达式){Case值1:语句块1;Break;Case值2:语句块2;Break;Default:语句块3;Break;}执行过程:首先计算表达式,然后根据计算结果与匹配case后面的值,如果有匹配项,则执行匹配项后面的语句,知道break语句跳出switch-case。如果所有的case值都不匹配,那么有default则执行default后面的语句,知道break结束。如果没有default,则跳出switch-case,什么都不执行。注意:匹配时和default的位置没有关系,只和值有关系。练习:If-elseif与switch的比较相同点:都可以实现多分枝结构不同点:switch:一般只能用于等值比较If-elseif:可以处理范围While循环的语法:While(条件)//循环体{要循环执行的N条程序;//循环体}执行过程:先判断循环条件,如果条件为true,则转向2;如果条件为false,则转向3。语法:Do{循环体;}While(条件);执行过程:1执行循环体,执行完循环转向22判断条件是否成立,如果条件为true,则转向1。如果条件为false,则转向3.3跳出循环,循环结束。假如循环条件一开始就不成立,对于while循环,一次都不会执行。对于do-while的循环体一般至少会被执行一次。While先判断