C#面象过程笔记
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既可以传入,也可以传出.