传智播客C#基础和Winform-笔记及案例-苏坤2011上课笔记.doc
《传智播客C#基础和Winform-笔记及案例-苏坤2011上课笔记.doc》由会员分享,可在线阅读,更多相关《传智播客C#基础和Winform-笔记及案例-苏坤2011上课笔记.doc(105页珍藏版)》请在咨信网上搜索。
今天学习的第一句话: Console.WriteLine(“你想显示的内容。”); 第二句话: Console.ReadKey(); 当程序执行到Console.ReadKey();时,程序会停到这里,等待用户从键盘上键入一个键,用户键入这个键之后,程序才会继续执行。 在C#中,每一句话都必须以“分号”结束 C#中的注释,什么是注释呢?对我程序进行的解释,注释是给人看的。 下面的一对指示可以折叠代码。 #region 内容 #endregion MSIL:微软中间语言Microsoft Inter mediate Language CLR:公共语言运行时Common Language Runtime CLS公共语言规范 Common Language Specification CTS:通用类型系统Common Type System JIT:即时编译器Just In Time 第二天课程:复习-- Console.WriteLine() 可以用CW加Tab键。这样就能直接打出Console.WriteLine(); 变量1: 变量:变量代表着一块内存空间,我们可以通过变量名称向内存存\取数据。有变量就不需要我们记忆复杂的内存地址。 向内存申请一块内存空间的语法: 数据类型 变量名; 整数在我们C#中的数据类型叫int Int nuber; 预定义类型 简单类型 非数值类型 bool char 数值类型 整数类型 8-Bit sbyte byte 16-Bit short ushort 32-Bit int uint 64-Bit long ulong 浮点类型 decimal float double object string Double:小数 Char:字符型 只能存储一个字符,并且存储的这个字符要求用单引号引起来 String 类型:字符串,就是把0个或1个或多个字符连接起来。字符串要求用双引号引起来。 Decimal 类型:用来表示钱和货币,失精度 不至于丢失。 注意:在C#开发环境中,直接写一个有小数点的数字,这个数字是double类型。 在一个小孩苏idan后面加个m\M,就告诉编译器这是个decimal类型 应该写成:money = 100.34m; 变量的命名规则: 1. 必须以“字母”_或@符号开头、 2. 后面可以跟任意“字母”,数字,下划线。 注意: 1. 你起的变量名不要与C#系统中的关键字重复。 2. 在C#中,大小写是敏感的。 3. 同一个变量名不允许重复定义(先这么认为,不严谨)。 l 定义变量时,变量名要有意义 l C#变量名编码规范---Camel命名法: n 首个单词的首字母小写,其余单词的首字母大写。 l Pascal命名规范:每一个单词第一个字母都大写。 l 如果使用到英文单词的缩写,全部用大写。 在一个方法中,一般情况下变量只能定义一次(先这么认为),但可以多此赋值,再次赋值时,会把变量中原有的值给覆盖掉。 “+”在C#中有两种意义: 1. 在数学中的加法运算:两边参与加法运算的数据类型为数字类型,则“+ “表示数学上的加法意义。 2. 是连接的意思:两边参与加号运算的数据,有一个是字符类型,那么这个“+“好就是连接的意义。 在Console.WritLine(“”)中,第一个变量/ 字符串中可以使用占位符。 占位符有{数字}组成,数字有0开始编号 第1个占位符:{0} 第2个占位符:{1} 第3个占位符:{2} ……… Console.WriteLine();有多个参数时,输出都是第一个参数中的内容,从第二个参数开始都是用来替换第一个参数中的占位符的值,所以从第二个参数开始,要不要输出,就要看第一个参数中有没有相关的占位符。 例如:Console.WriteLine(”{0}我叫”+name,”今年”+age+”岁了”); 输出结果是:今年28岁了我叫张三 再学习一句话,用于让用户从键盘上输入一句话。当程序执行到线面这句话,就会暂停,然后等待用户从键盘上输入一句,按回车程序将继续执行。如果想得到用户输入的的内容,就需要定义一个string类型的变量,写在下面这句话前面,接收用户输入的内容。 Console.ReadLine(); 接收用户输入的内容,必须定义一个字符串来进行接收。 String input = Console.ReadLine(); 转义字符: 什么时候用,当我们需要在字符串中输入一些特殊字符时,比如:半角引号,换行,退格。就需要使用转义字符。 转义字符是一个字符,他由一个\+一个字母来组成具有特殊意义的一个字符。 常用的转义字符: \n换行 \b backspace 退格 \t tab键 由多个空格组成的一个字符,具有行与行之间的对齐功能。 \\表示一个\ 在字符串前面加一个@符号有两种意义: 1. 字符串中如果有\,则不再理解为转义符。 2. 使字符串可以换行 如果字符串前面加了@符号,在字符串上用连个双引号代表一个双引号。 C#中,有五个算术运算符:+-*/% 他们二元运算符。要求参与运算的两个操作数的类型必须相同,并且经过运算后的结果也与操作数的类型相同。 在算术表达式中,如果要改变计算的优先级,用小括号。小括号可以无限制的套用,但一定要成对出现。 发生自动转换的条件: 1. 参与运算(算术运算和赋值运算)的操作数和结果类型必须一致。当不一致时,满足下面条件时,系统自动完成类型转换。 2. 两种类型兼容 3. 例如:int 和 double兼容 4. 目标类型大于源类型 5. 例如:double>int 自动转换中,转换是不会丢失进度的。 经常见到的就是,参与运算的两个操作数,一个是int ,一个是double,那么int类型会自动转换乘double 如果一个操作数为double型,则整个表达式的运算结果为double类型。 当需要丢失精度的转换(如果从double3.14到int 3的转换,会丢失0.14的精度)时,系统是不会帮我们自动转换的。需要我们程序员来写代码完成转换。 (数据类型名)待转换的值; 注意:下面的两种转换是错误的。因为强制类型转换要求待转换的类型和目标类型必须都为数字。 //string age = (int)Console.ReadLine; //int a = (int) “33”; Int 变量 =Convert.ToInt32(待转字符串); 上面语句的意义:把待转字符串转换成int类型后赋给变量。 C#中的异常捕获如何完成: Try { 有可能出现错误的代码写在这里 } Catch { 出错后的处理 } 上面的程序如何执行: 如果try中的代码没有出错,则程序正常运行try中的内容后,不会执行catch中的内容。 如果try中的代码一旦出错,程序立即跳出catch中去执行代码,那么try的出错代码后面的代码不再执行。 Age++ 自加一 有前加和后加 Age--自减一 有 前减和后减 例如: Int age = 18 ; Int sum = age ++ -10; 上面代码age 是后加。所以在进行语句运算时,age++取age原值参与运算,所以sum=8 Int age = 18 ; Int sum = ++age -10; 上面age是前加,所以在进行语法运算时—++age取age加一后的新值参与运算,所以 sum=9 总之,不管是++age还是,进过运算后,age的值都进行了+1运算。 Int age = 18 ; Int sum = age ++ -10; 相当于: Int age =18; Int sum = age -10 Age = age + 1 Int age = 18 ; Int sum = ++age -10; 相当于: Int age = 18; Age = age + 1; Int sum = age -10; 在C#中,一般情况下,一元运算符++ --大于二元运算符+-。 复合运算符: Age+=4 理解为在Age的原值的基础上加4; 在C#中,有 6个关系运算符,用于比较两个事物之间的关系。 < > == != >= <= 关于表达式:由关系运算符连接起来的式子。 关系表达式的运算结果bool类型,bool类型只有连个值,一个是true,一个是false. 如果关于运算表达式成立,则这个表达式的值为true,否则为false。 逻辑运算符: && || ! 逻辑与运算: Bool isRight = 表达式1 && 表达式2 逻辑与连接的两个表达式,要能够求解成bool类型,一般情况都是关系表达式。 整个逻辑与运算的结束也是bool类型 表达式1 表达式2 逻辑与结果 True True True True false false false True False false false False 两个表达式全为true,逻辑与才为true 逻辑或(或者): Bool isRight = 表达式1 || 表达式2 逻辑与连接的两个表达式,要能够求解成bool类型,一般情况都是关系表达式。 整个逻辑与运算的结束也是bool类型 表达式1 表达式2 逻辑或结果 True True True True false True false True True false false False 有一个表达式为true,逻辑或就为true 逻辑非: !(取反) 这是一个一元运算符。 用法: !(布尔类型的表达式) 作用: 如果布尔类型的表达式为true,加!号后,其整个式子的结果为false。 如果:布尔类型的表达式为false,加!号后,其整个式子的结果为true。 逻辑与与逻辑或的短路问题: 例如: Int a = 10; Int b = 5; (1)Bool result = ++a>5 && ++b>1; (2)Bool result = ++a>5 || ++b>1; 当逻辑与第一为假时第二个不再检查真假,直接输出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-else if语句中。只有当上一个条件不成立时,才会进入下一个if语句并进行if语句后面的条件判断。一旦有一个if后面的条件为true,则执行if所带的语句(块),语句(块)执行完成后,程序跳出if-else if结构。如果所有的if条件都不成立,则如果最后有else则执行else所带的语句,否则什么都不执行。 注意: 代码自动排版对齐快捷键: Ctrl +k +f Else 离它最近的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-else if与switch的比较 相同点:都可以实现多分枝结构 不同点:switch:一般只能用于等值比较 If-else if:可以处理范围 While 循环的语法: While(条件) //循环体 { 要循环执行的N条程序; //循环体 } 执行过程: 先判断循环条件,如果条件为true,则转向2;如果条件为false,则转向3。 练习 练习第一题 N 次循环,如果I从0开始,则循环条件为I<N. N 次循环,如果I从1开始,则循环条件为I<=N. 因为I是控制循环循环次数,所以I 又叫做循环变量。 第二题 第三题 第四题 第五题 语法: Do {循环体;} While(条件); 执行过程: 1执行循环体,执行完循环转向2 2判断条件是否成立,如果条件为true,则转向1。如果条件为false,则转向3. 3跳出循环,循环结束。 假如循环条件一开始就不成立,对于while循环,一次都不会执行。对于do-while的循环体一般至少会被执行一次。 While 先判断,后执行。 Do-while 先执行,后判断。 For 循环: 语法: For(表达式1;表达式2;表达式3;) { 循环体; } For循环,一般用于已知循环次数的循环。 一般情况: 表达式1:用于定义循环变量和对循环变量赋初值。 表达式2:循环条件 表达式3:用于改变循环变量的值。 执行过程: 第一步:计算表达式1,转向第二部 第二步:计算表达2(循环条件),如果表达式2的值为true转向第3部。如果表达式2的值为false,转向第5步. 第三步:执行循环体,转向第4步。 第四步:执行表达式3.转向第4步。 第五步:循环结束。 练习: 水仙花数是一个三位数,设cba. A*a*a+b*b*b+c*c*c =cba 例如:153=1*1*1+5*5*5+3*3*3 第一题 第二题 问题3 分析: N为用户输入的数字,假如是6. I=0 1+n=n I=1 1+(n-1)=n I=2 1+(n-2)=n 当I行时,i+(n-1)=nage 循环 Break: 1) 可以用于switch-case判断中,用于跳出switch 2) 用在循环中,用于立即跳出(终止)循环。 注意:用于循环中时,跳出的是break所在的循环。 第1题 非数字 如果出错,不显示时,可以改为 第2题 第3题 0+1=1 1+2=3 3+3=6 4+6=10 5+10=15 6+15=21 l 立即结果本次循环,判断循环条件,如果成立,则进入下一次循环,否则退出循环. Continue: 用于循环中,程序一旦执行到continue语句,立即结束本次循环(就是不再执行循环体中continue下面的语句了),直接进行下一次循环。(do-while/while直接进行下一次循环条件的判断,如果条件成立,则再次进入循环。对于for循环,先执行表达式3,再判断循环条件是否成功!) 总结 顺序结构:语句顺序执行 分支结构:语句在满足条件下执行 If, if else,if else-if,switch case, 表1?表2:表3: (三元表达式) 循环结构:语句在满足条件下循环执行多次 While,do while, for 跳转语句: Break,continue,goto 三元表达式: 表1?表2:表3: 执行过程:首先计算表达式1,表达式1 应该是一个能够计算成bool类型的值,如果表1的值为true,则表达式2的值作为整个表达式的值,如果表1的值为false,则表达式3的值作为整个表达式的值。 表达式2 和表达式3 的类型一定要相同(相兼容)。 例如:a>b? a:b; 常量: 语法: Const 类型 常量名 = 常量值 在定义时赋值,在其他地方不允许赋值。 枚举: 让我们定义一种枚举类型并且在定义这种类型时我们要指定这个类型的所有值。 语法: Enum 自己起的类型名称 { 值1,值2,值3。。。。值N } 枚举的定义,一般和类定义在同一个级别。这样,在同一个命名空间下的所有的所有的类就都可以使用这个枚举了。(在方法中也可以,在类中也可以。) 枚举的作用: 1) 限制用户不能随意赋值,只能在定义枚举时例举的值中选择。 2) 不需要死记没一个值是什么,只需要选择相应的值。 注意:定义枚举时,值不能为int 类型。 枚举类型的变量都可以强制转换成一个int类型。 枚举的值在定义时是有一个默认编号的,编号从0开始。 如何把一个字符串转换成枚举类型: (自枚)(enum.parse(typeof(自枚),“待转换的字符串”) ); 为什么要用结构: 1) 比如我们上课讲的为了存储一个人的信息,要声明一组变量。当我们要存储N个人的信息时,就要声明N组变量,麻烦。 2) 存储一个人信息的这几个变量间没有关系,容易记乱。 语法: 访问修饰符(目前用public)struct 结构名 { (必须加public)定义结构成员; } 例如: public struct person //定义一个名称叫person的结构。 { Public string name; //结构成员 Public geder sex; //结构成员 Public int age; //结构成员 } 定义好一个结构后,就可以直接声明相应的变量了。 声明好变量后,通过变量名.成员名 来访问结构的成员。 计算机中最小单位“位“ ,bit 比特 就把8个二进制位分成一组,那么8个二进制位叫做字节 byte B 计算机能够处理的最小单位。 1 KB =1024B 1MB=1024KB 1GB=1024MB 1TB=1024GB Bps传输速度 bit per second 数组:可以帮我们一次声明多个同类型的变量。这些变量在内存中是连续存储的。 数组声明语法: 数据类型[] 数组名 =new 数据类型[数组长度]; 例如: int[] score =new [5]; 就声明了一个长度为5的数组,数组叫score 通俗点说:就是声明了一个数组,里面包含5个int类型的变量。 数组名叫score 里面的5个int 类型的变量叫做:数组的元素 比如上面声明语句:int[] score=new int[5],就为我们声明5个int类型,分别为:score【0】score【1】score【2】score【3】score【4】 如何访问数组:通过下标(索引)来访问数组。 比如,我们要向第0个元素赋一个3.可以这样写: Score[0] = 3; Int类型数组一旦声明,里面的每一个元素被初始化成0通过 数组名。Length 可以获得数组的长度 Console.Clear(); 清屏 l 一次语文测试后,老师让班长统计每一个学生的成绩并计算全班(全班共10人)的平均成绩,然后把所有成绩显示出来. l 如何声明变量? l 好的解决方法,使用数组. 求输入的成绩最高分 求总分,平均分,最低分,最高分分别是多少?(自己想的) 5个元素(2) 6个元素(3) 例如:A+B=Length,B=Length-1-i ,Length-1指最后一个元素。 0-4 0-5(6(length)-1-i) 1-3 1-4 2-3 N个元素进行交换; 1) 进行N/2次 2) 在一个循环中,第i个元素与第length-1-i个元素进行交换 第1题 最大值和最小值 第二题 第2题 第5题 如果是倒过来的元素 交换 第1题 冒泡排序: 让数组中的元素两两比较,(第i个与第i+1个比较),进过n(i-1)遍两两比较,数组中的元素能按照我们预期的规律排序。 要从大到小排序,我们进行两两比较的时候用< 10,20,30,40,50,60,70 原始数据7个元素 20,30,40,50,60,70,10第一趟比较6次。 30,40,50,60,70,20,10第二趟比较5次。 40,50,60,70,30,20,10第三趟比较4次。 50,60,70,40,30,20,10第四趟比较3次。 60,70,50,40,30,20,10第五趟比较2次。 70,60,50,40,30,20,10第六趟比较1次。 也就是n个数需要排n-1趟 第t趟比较的次数为:N-t次 i=o 第1趟 i=1 第2趟 趟数:i+1 {可以理解为:for(int j=0,j<n-1-I,j++) 例如 for(int i=0,i<10,i++)} For(int i=0;i<numbers.length-1;i++)//外层控制趟数 { For(int j =0;j<numbers.length-1-i;j++)//控制比较 { If(>) { 交换 } } } 从大到小排序(12,34,23,65,78,67,45,90,87,76,22,222,98 ) 方法: 功能:用来复用代码的。当我们在一个程序反复写的同样的代码。那一般情况下,我们可以把需要重复写的代码定义在一个方法中。用的时候只需要调用就行了。 定义方法的语法: Public [访问修饰符][static] 返回值类型 方法名([参数]) { 方法体; } 注意: 1.方法一般情况下,方法一般要定义在类(class)中。 2.如果方法没有返回值,则返回值类型写void。 3.如果方法中没有参数,()不能省略。 方法的调用:如果是静态方法(有static修饰的)则使用类名.方法名() 在类中调用本调用的方法,可以只写方法(); Return:立即退出本方法 变量的作用域: 在方法中定义的变量称为局部变量,其作用域从定义开始,到其所在的大括号结束为止。 当被调用者想得到调用者的方法中的变量时,则可以让调用者通过参数的形式给被调用者。 例子: Public static void test(int number) //形参 { } 在方法名后面的括号内定义变量,叫做定义这个方法的参数。这里定义的变量用于接收调用者传过来的数据。 注意:如果一个方法一旦有参数,那么调用者就必须传参数,并且传参数的个数与对应位置上的类型必须一致。 当调用者想访问我们方法中的变量时,可以通过返回值返回。 例如: String s= console.ReadLine() Int i= Convert.ToInt32(“22”) 为什么方法前面能够定义一个变量收到方法的值,是因为在方法中使用了返回值。 只要在方法中返回了值,那么在调用方法中,前面就应该用一个变量来接收方法的返回值。 求 注意:一个方法只能有一个返回值。 一旦一个方法有返回值,那么在这个方法的体中就必须通过return语句返回一个值,并且这个值要与返回值的类型是相同的。 语法: return 值; 当形参是数组的时候,我们传数组名。 一个变量一旦定义在方法外,类的里面,就叫做类的字段。这个变量就可以被本类的所有的方法所访问。但是哟呵注意,静态方法只能访问静态字段。 由const修饰的常量不能定义静态的。 第2题: 第2题 举例:写一个方法,判断一个年份是否是润年 什么叫方法重载: 一般在同一个类中,方法名相同,并且方法的参数的个数不同或者对应位置上的类型不同,才能构成方法的重载。 通过参数来反值: 如上代码: 实现步骤: 1在方法的参数类型前加out,那么传参数的时候,也必须在number前加out表明这个参数不是传入的,而是用来传出值的。 2如果参数是以out形式传入的,那么在传入前可以不赋初值。 3在方法中对于由out修饰的参数,必须赋值,并且必须在使用前赋值。 第一 第2题 练习:写一个MyTryParse 方法,要求用户传入一个字符串,如果这个字符串能转成int类型,则方法返回true,并且转换后的int类型数据通过方法的参数传出。如果字符串不能转换成int类型,则方法返回false,那么out传出的参数将没有意义,在方法中随意赋个值就行了。 l 方法只能返回一个值,当需要返回多个值时怎么办? l 例如: 写一个方法,计算一个int类型数组中每个元素的总和 和 最大值与最小值? Out用于传出值;在方法中必须对out修饰的传出值进行赋值。 Ref可以理解成是双向的,既可以传入,又可以传出。(像C语言中的指针) 在传参的过程中,如果参数有out或ref修饰的话,那么改变方法中的参数变量的值,调用者方法中变量的值也会相应改变。 按任意键,掷数字 l 属性——对象具有的各种特征 l 每个对象的每个属性都拥有特定值 l 例如:杨老师和张三的年龄不一样. l 属性:姓名,性别,年龄 l 属性的值: l 方法: 行为,动作.执行的操作. l 方法:杨老师的行为,上课. l 学生的行为,学习 找出下列对象共性 l 张三(一个学生)\杨老师\邻居售货员张阿姨\李四的爸爸\李四的妈妈 l 门口停的奔驰S320汽车/老师开的QQ汽车/杨老师的解放牌大货车 l 类:类是模子,确定对象将会拥有的特征(属性)和行为(方法) l 类是对象的类型 l 人类 解俊峰; 类是对象的类型 int a; • 对象是一个你能够看得到、摸得着的具体实体 • "人"类都有:姓名\性别\年龄 属性,有说话的方法. • 张三是属于人类的一个对象,他的姓名属性的值:张三 性别的属性的值:男 年龄属性的值:20 张三会说话 • 对象可以叫做类的实例(Instance) • 类不占内存,对象才占内存. Params • • • l 定的定义语法: [访问修饰符] class 类名 { 成员; ...... } l 类中可以包含变量的定义、方法。 l 请练习定义一个人类.人类分别用三个变量来表示姓名性别年龄,有一个打招呼的方法,有一个走路的方法. 在我们写类中,我们在写方法时,先不要加static, 下面我们定义了一个叫Person的类,这个类仅仅是人这个对象的模板, 在这个模板规定了人的对象应有 性别,姓名,年龄和SayHello方法 如果通过一个类来实现一个对象呢? 通过类来实现对象的过程,叫做类的实例化 类的实例化,用关键字new 语法: 类 实例名 = new 类(); 访问类的属性 实例名.属性名 访问类的方法 实例名.方法名() 只要没有加static的方法或者属性,都必须先实例化,在通过实例名.方法或者实例名.属性来访问。 加static的方法或者属性,可以直接通过实例名.方法或者实例名.属性来访问。 调用了SayHello,如下: 访问修饰符:在C#中有4个访问修饰符号 Public : 可以在任何地方被访问 Internal :可以在本项目访问 Private :只能在本类访问 Preotected :只能在本类或者子类被访问 在类这个级别,不写访问修饰符默认为internal 在一个类定义类或者方法中,没有写修饰符,那么默认的修饰符为private 什么叫属性,通属一点:就是定义一个public具有get/set方法的变量, 这个变量来保护私有的变 利用private,用方法SayHello();调用姓名和年龄的变量。 姓名三没有显示,显示男生,如果输入错的,就直接默认为男生。 l 允许外部访问的变量一定要声明为属性。 属性可分为:读写、只读 读写属性: 具有get/set方法的属性叫做读写属性 具有get方法的属性叫做只读属性,这个属性只能读取,不能写入。 具有set方法的属性叫做只写属性,这个属性只能写,不能写读(只写属性比较少)。 类的练习 l 定义一个学生类,有六个属性,分别为姓名、性别、年龄、语文、数学、英语成绩。 l 有2个方法: • 一个打招呼的方法:介绍自己叫XX,今年几岁了。是男同学还是女同学。 • 一个计算自己总分数和平均分的并显示方法。{显示:我叫XX,这次考试总成绩为X分,平均成绩为X分} l 实化两个对象并测试: • 张三 男 18 三科成绩为:90 95 80 • 小兰 女 16 三科成绩为:95 85 100 当我们实例化一个类时,系统自动对这个类进行初始化, 数字类型初始成为0/0.0 String 初始化为:null Char 初始化为:\0 使用构造方法的好处: 1)对多个属性进行赋值时,不需要重复写实例名 2)可以保证在用户在new一个对象的时候必须对某个对象进行赋值 3)和2类相类似,在创建时,对只读属性进行初始化 当我们定义一个类后,如果没有写构造方法,那么系统自动会给我们加上一个默认无有参数的方法,在这个构造方法中,上面都不做,我们也看不到。 我们可以定义一个构造方法: 构造方法时一个特殊的方法,他的名字与类的名字相同,并且没有返回值,可以省略void,我们手动添加一个构造方法后,系统原先自动默认给我们的那个无参的构造方法不会再帮我们添加了。 //这种构造方法,使实例名出错。Student zsStudent = new Student (); 实例, 出错 //可以在实例名加参数,这样就string name就可以读取实例名的属性。 例如Student zsStudent = new Student (“张三”); 张三赋值后,如果去掉set,只能读取,不能修改。 zsStudent.Name = "张三"; 张三不能改张四 构造函数可以重载,也就是有多个参数不同的构造函数 l 构造函数可以有参数, new对象的时候传递函数参数即可 l 如果不指定构造函数,则类有一个默认的无参构造函数。如果指定了构造函数,则不再有默认的无参构造函数, l 如果需要无参构造函数,则需要自己来写。 类名Student - age:int –指私有 - name:string + Name:string +SayHi():void +指共有 练习1 l 给前面写的学生类添加构造方法.使在实例化学生类的时候可以通过构造方法对姓名性别年龄语数英等属性赋值,也可以只对姓名和性别赋值.年龄默认为18岁,语数英成绩默认为0分. l 练习2 l 给前面写的学生类添加构造方法.使在实例化学生类的时候可以通过构造方法对姓名性别年龄语数英等属性赋值,也可以只对姓名和性别赋值.年龄默认为18岁,语数英成绩默认为0分. 命名空间 l namespace(命名空间),用于解决类重名问题,可以看做“类的文件夹”。 l 如果代码和被使用的类在一个namespace则不需要using。 l 在不同命名空间下的类调用有两种方法: • 写全称 命名空间.类名 • 先using引用命名空间,再调用 在不同命名空间下的类,不能被直接访问。想要访问别的命名空间下的类有两种方法: 1)通过using引用对方的命名空间 2)写全称.命名空间.类名 l string可以看做是char的只读数组。char c = s[1];。例子:遍历输出string中的每个元素。 l C#中字符串有一个重要的特性:不可变性,字符串一旦声明就不再可以改变。所以只能通过索引来读取指定位置的char,不能对指定位置的char进行修改。 l 如果要对char进行修改,那么就必须创建一个新的字符串,用s. ToCharArray()方法得到字符串的char数组,对数组进行修改后,调用new string(char[])这个构造函数(暂时不用细研究)来创建char数组的字符串。一旦字符串被创建,那么char数组的修改也不会造成字符串的变化。例子:将字符串中的A替换为a。 l 练习一:随机输入你心中想到的一个名字,然后输出它的字符串长度 Length:可以得字符串的长度 l 练习二:两个学员输入各自最喜欢的课程名称,判断是否一致,如果相等,则输出你们俩喜欢相同的课程.如果不相同,则输出你们俩喜欢不相同的课程. String类: 方法 ToLower ToUpper Equals Replace Substing Indexof 属性: Length (获得字符串的长度) l Tostring一切对象都可以调用.ToString()方法转换成字符串类型. l 字符串的连接+,两边只要有一个是字符串类型,另一个也会被自动转换成字符串类型 .length 获取当前string对象的字符数。 怎么把C# 和c#输入的课程显示是是相同的。 字符串的分割 l string[] Split(params char[] separator):将字符串按照指定的分割符分割为字符串数组; 如果将显示的13个单词变成原来六个单词。因为里面单词之间的空格太多,编程自动将空格默认为单词。 可以通过以下方法 l 练习:从日期字符串("2008-08-08")中分析出年、月、日;2008年08月08日。 l 字符串替换:string Replace(string oldValue, string n- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 传智播客 C# 基础 Winform 笔记 案例 苏坤 2011 上课
咨信网温馨提示:
1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前自行私信或留言给上传者【xrp****65】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时私信或留言给本站上传会员【xrp****65】,需本站解决可联系【 微信客服】、【 QQ客服】,若有其他问题请点击或扫码反馈【 服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【 版权申诉】”(推荐),意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4008-655-100;投诉/维权电话:4009-655-100。
1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前自行私信或留言给上传者【xrp****65】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时私信或留言给本站上传会员【xrp****65】,需本站解决可联系【 微信客服】、【 QQ客服】,若有其他问题请点击或扫码反馈【 服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【 版权申诉】”(推荐),意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4008-655-100;投诉/维权电话:4009-655-100。
关于本文