基础概念性的东西,也是要记的知识点;总结出来以便复习查阅.学习基础视频有一段时间了,但发现效果不是很满意.细想想是学习方法出了问题。"走马灯"似的看视频教程,在当时好像是理解了;明白了,但真真正正去解题实现代码时就不知所措了。到这我想起了一件事,有一个网球教练对学生说:“如果一个网球掉进草丛里,应该如何找?”有人说:“从草丛中心线开始找”,又有人说:“从草丛的最凹处找。”也有人回答:“从草最高的地方找。”教练却说,按部就班地从草地的一头,找到另一头。成功的方法很简单,从头做起,不要试图走捷径,偷懒。回看看像看电影试的囫囵吞枣的看视频,不正是走捷径,偷懒的思绪在作祟吗?其实这是在浪费时间,遭踏时间;当某个题不知怎么实现时,不得重新再翻视频吗?——不说废话了
1.net/dotnet一般指.net Framework框架是一种平台,一种技术.net是一种多语言的平台,其实也是多平台,只是在微软的平台上。 2.解决方案包含项目名称包含命名空间包含类包含方法。 3.重置开发环境:工具->导入导出->重置。 4.Main方法是项目的入口方法。Main方法运行完,则整个程序执行结束。一个程序最多有一个Main方法,可以没有。 5.常用快键:Home键跳到行的最前面。End键跳到行的最后面。PageUp、PageDown上下翻页Ctrl+Home移到文档的最前面,Ctrl+End移动到文档最后面。 Ctrl+Z撤销操作。#region #endregion 折叠代码(Ctrl+K+S),Ctrl+.引入命名空间;Ctrl+j智能提示;Ctrl+r+e封装字段,对齐代码Ctrl+K+d等 6.变量:<1.存储数据的容器,系统会根据声明变量类型决定开辟多大内存空间来存储数据,变量代表着一块内存空间,可以通过变量名称向内存存/取数据。有变量名称就不需要记忆复杂的内存地址。变量要先声明,后使用变量可以多次赋值,一旦给变量赋了新值,原来的值将会被覆盖。 <2.变量命名规则 1.必须以“字母”_或@符号开头,后面可以跟任意“字母”,数字,下划线. 2.c#中大小写是区分的,变量名不要与c#系统中的关键字重复,在方法中同一个变量名不允许重复定义. 7.数据类型: 定义变量的时候类型有 int double decimal(值后加m) string char等。 8.“+”有两种意义:1数学中的加法运算 2连接的意思.(输出语句中经常会用到,当然还有占位符的方式) 9. 转义字符: \n 表换行,\b backspace退格,\t tab键(制表符),(\)还有一个表示:续行符,两行之间连成一行. @符号:1.包括的字符不再转义 2.使字符串可以换行 3.加@符号时用两个双引号代表输出一个引号. 10.输出语句: Console.Write()与Console.WriteLine()区别:前者输出之后不换行,后者换行。 清屏:Console.Clear(); 11.算术运算优先级:先乘除,后加减,有括号先算括号里的,相同级别的从左至右运算 小括号可以无限制的套用,但一定要成对出现。 12.运算时数据类型:+-*/运算要求两个操作数的数据类型必须相同。并且经过运算后的结果,数据类型也必须和操作数数据类型相同。 13.强制类型转换,和自动转换(自动转换也叫隐式转换,不会丢失精度)要求两边的数据类型是相兼容的. 14.注释: 单行注释 // 多行注释 /* * */(不能嵌套使用) 文档注释 /// 15.异常处理try catch: try{ 可能有出现错误的代码 //如果没有错,不会执行catch中的代码段,如果有错误,立即跳入catch代码,不再执行try中出错代码 } catch{ //异常后的处理代码 } 16.int 变量名=Convert.ToInt32(待转换的字符串)(需要异常处try{}catch{}); bool balg=int.TryParse(字符串,out num)不需要异常处理. 17.一切数据类型都可以转换成字符串类型。(ToString()). 18.交换算法: 1>定义临时变量: int a=5; int b=10; 交换a与b中的值. 交换东西就好比左右手(小孩子的手没有抛物能力)中的苹果和梨. 想要交换手中苹果和梨必须借助大人的手帮我拿着,把苹果(或梨)换手,再从大人手中拿过来. int temp=a; 第三方临时变量(大人的手) a=b; 左右手交换 b=temp; 从大人手中拿过来,完成交换. 2>计算法:a=a+b;(11) b=a-b;(5); a=a-b;(6)有局限性只能用于int类型. 19.if结构基本语法:if(条件){}条件一般为关系表达式或逻辑表达式. 20.if else if 结构执行过程:只有当上个if条件为false时才进行下一个语句判断。如果if为true则执行if对应的{}语句块。 当所有if elseif都不符合条件,执行最后一个else。否则什么都不执行。 21.Switch-case语句格式:Switch(表达式){case,break,default,break} 执行过程:首先执行表达式,然后根据表达式的值(值的类型string,int,char,short等) 与case的值进行匹配,如果匹配则执行case后面的语句块,遇到break跳出switch。 如果表达式的值与所有的case语句都不匹配,那么有default,执行后面语句块,没有default, 直接跳出switch语句,什么也不执行。 注意:匹配时和位置没有关系,跟值有关系。 22.if –else if 和switch语句比较: 相同点:都可以使用多分支. 不同点:switch一般用于等值,if-else if 可以处理范围. 23.while 语法: While(循环条件)(条件表达式或逻辑表达式) {循环体}执行过程:先判断如果为true,执行循环体,接着再判断(循环变量),直到条件为false跳出. 24.do while语法 do{循环体}while(循环条件)先执行一次再判断如果为true,执行循环体,直到为false跳出. while能做事,do while也能完成 但要注意do while比while多执行一次. 25.for语法 当明确循环次数时用for,可以无限制的嵌套使用. for(int i=0;i<num;i++) { 先int i=0;再判断;后执行;紧跟着i++ 又判断;后执行;紧跟着i++ ...(所有的数组都来源于Array) } for循环直接访问成员,可以控制循环的进度,位置和其他顺序,直接修改数组中数据. 26.乘法口决 for (int i = 1; i <= 9; i++) //控制表达式有几行 { for (int j = 1; j <=i; j++) //控制表达式的个数 { Console.Write("{0}*{1}={2}\t",j,i,j*i); //注意输出的算式与乘积 } Console.WriteLine(); //打印完一行表达式换行 } 27.常量:const类型 常量名=常量值 在定义时赋值,其它的地方不允许赋值,由Const修饰的常量不能定义成静态的. 28.数组:可以帮我们声明多个同类型的变量,这些变量在内存中连续存储的. 定义: int[]num=new int[给定长度]; int[]num=new int[长度与值相对应]{给定值}; int[]num=new int[不指定长度]{给定值}; int[]num={直接赋值}; 用法:变量名[下标]得到或修改相应的值.一般用for循环遍历输出数组中的所有值. 29.反转: 所谓反转(反序)让数组中的元素经过length/2 次两两交换位置的过程. int[]num={1,9,3,6,0,7,5}; for(int i=0;i<num.length/2;i++) //交换num.length/2 次 { int temp=num[i]; num[i]=num[num.length-i-1]; //第一个与最后一个元素进行交换 num[num.length-1-i]=temp; } for(int j=0;j<num.length;j++) { Console.Write(num[j]+" "); } 30.冒泡算法:让数组中的元素两两比较(第i个与第i+1个比较)经过n(i-)遍两两比较,数组中的元素按预期规律排序,从小到大排序,两两比较时用大于号. int[]num={3,6,1,8,5,7,9}; for(int i=0;i<num.length-1;i++) //控制比较的趟数num.length-1 { for(int j=0;j<num.length-1-i,j++) //控制比较的次数num.length-1-i { if(num[j]>num[j+1]) //从小到大排序 { //交换位置 int temp=num[j]; num[j]=num[j+1]; num[j+1]=temp; } } } //遍历输出 for(int k=0;k<num.length;k++) { Console.Write(num[k]+" "); } 31.方法:是为了解决代码复用,如果一段代码被重复写,可以定义一个方法来代替。 方法语法:[访问修饰符][static] 返回值类型 方法名([参数]){方法体;} 定义方法时:方法名后的参数叫做形参。调用时参数的变量名可以和形参不相同,但类型必须与形参类型一致。 当形参为数组是,要传数组名. 如果方法定义了返回值,则必须定义一个变量接受返回值。 方法只有一个返回值,如果需要得到两个或多值时,就要用到out或ref. 注意:<1.方法一般写在类中<2.方法名开头大写<3方法调用:类名.方法名()<4 return退出本方法. 32.方法调用:<1.静态方法(由static修饰)类名.方法名(); 变量一旦定义在方法的外面,类的里面.就叫类的字段,可被本类所有的方法访问,但静态方法只能访问静态字段. <2.非静态方法:不加static的方法要实例化,实例名.方法名调用.即能访问静态字段,又能访问非静态字段. 33.变量的作用域:在方法中定义的变量是局部变量,其作用域从定义开始到其定义所在大括号结束为止. 34.枚举语法: 关键字Enum,定义的是一种类型{值1,值2,值3}枚举一般和类定义在一个级别如下: enum Gender { 男,女 } //调用时: Gender sex = Gender.男;(类型点出值即可) 35.结构体语法: [访问修饰符]关键字struct 结构名 {定义结构成员 <变量、方法>在结构中定义变量,必须有public} 36.重载:一般在同一个类中,方法名相同并且方法的参数个数,或者对应位置上的类型不同,才能构成重载。 注意方法重载和返回值没有关系. 37.out与ref区别:out主要用于往外返值,传入值,没有什么意义。ref既可以传入,也可以传出.