基础概念性的东西,也是要记的知识点;总结出来以便复习查阅.学习基础视频有一段时间了,但发现效果不是很满意.细想想是学习方法出了问题。"走马灯"似的看视频教程,在当时好像是理解了;明白了,但真真正正去解题实现代码时就不知所措了。到这我想起了一件事,有一个网球教练对学生说:“如果一个网球掉进草丛里,应该如何找?”有人说:“从草丛中心线开始找”,又有人说:“从草丛的最凹处找。”也有人回答:“从草最高的地方找。”教练却说,按部就班地从草地的一头,找到另一头。成功的方法很简单,从头做起,不要试图走捷径,偷懒。回看看像看电影试的囫囵吞枣的看视频,不正是走捷径,偷懒的思绪在作祟吗?其实这是在浪费时间,遭踏时间;当某个题不知怎么实现时,不得重新再翻视频吗?——不说废话了
    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既可以传入,也可以传出.