一、基础语法
1,注释
单行注释://
多行注释:/*要注释的内容*/
方法注释:/// VS自动补全注释内容,自己添加参数,也叫文档注释。
2,关键字
public static void class int double string。。。
关键字在VS中显示为蓝色
3,标识符
用来给类、方法、变量等起的名字,由使用者自己决定。
标识符的命名规则:
1)由字母、下划线、数字组成,也可以是中文,但是太low
2)不能以数字开头
3)不能使用纯粹的C#中的关键字
4)C#大小写区分,Sum和sum是两个不一样的东西。
5)标识符使用驼峰命名法(每个单词的第一个字母大写;如果是变量则第一个单词全部小写,后面继续执行驼峰命名法)
6)标识符要有意义,命名规则不是强制规定,但是最好按照:类名、方法名大写开头、变量小写开头
7)C#中有可以在标识符中使用@,@是转意字符,用在路径或者字符串之前表示它之后的字符串或路径,原样输出。
4,变量的声明、赋值和作用域
1)定义一个变量的语法是:
变量类型 变量名=变量的值;如 int i = 0;double d = 1.23; string str = "你好";
注意:C#中如果一个变量在声明后会被使用,则必须先赋值后使用。
2)变量的赋值
变量类型 变量名=变量的值; C#中必须先给变量赋值,才能使用它
3)变量的作用域
全局变量是声明在类中的变量,在整个类中都可以使用。
局部变量只在当前大括号(代码块)内起作用,同一个变量名,如果处于不同的大括号,则代表是不同的变量,可以并存。
但是在循环中定义的变量,只作用于循环内。
5,数值类型和显式、隐式类型转换
1)数值的类型包括 int:整型、double:小数、char:字符型、string:字符串、byte:字节型,代表一个8位二进制,也就是一个字节
2)选用数据类型时要考虑可能的范围,避免溢出或者浪费,尽量选择最小范围的类型。
3)隐式转换
将小范围的数据类型转换为大的,需要隐式转换。采用直接赋值。如
int i = 10;double d = i ;
4)显式转换
将大范围的数据类型转换为小的,为显式转换。如
double d = 1;
int i = (int)d;
5)类型转换的问题:大范围转换为小范围会丢失精度,如double转换为int会丢掉小数部分。同理float到int也是
6,float和double类型的声明和转换
1)声明:float f = 1.23F; double d = 1.23;
double比float的值范围大,double到float采用显式转换,反过来采用隐式转换
7,算术运算时数据类型造成的结果影响
1)如果运算符两边的数据类型一样,则结果为原来的数据类型。
2)如果运算符两边的数据类型不一样,则结果的数据类型为小范围的那个数据类型。
8,string类型的声明和转换、转义字符
1)声明:string str= “str”;
2)string类型转换其他类型使用:
Convert.ToInt32();转换为int型
Convert.ToDouble();转换为double型
Convert.ToChar();转换为char型
其他类型转换为string类型:
变量名.ToString();
3)转义字符
一个\表示将其后面的字符原样输出或者使用。如\\代表一个\、\t代笔Tab等
9,大写String和小写string区别是什么?
String是类,我们使用string时编译器会自动转换为String供编译时使用
10,枚举
1)枚举是自定义的特殊类型,主要表现为:需要确定取值范围。
2)定义的方法:
enum Dir
{
East,West,North,South;//以分号结束
};//注意这里有个分号
3)使用
枚举类型 变量名 = 变量名.枚举类型的值;
如:Dir d = Dir.East;
11,运算符的使用,运算级别
1)运算符包括+、-、*、/、%、++、--等符号
其中%为求余运算符:两数相除取余数。注意,求余运算符两边都为整型数据,结果是两个整数相处的剩下的数,也是个整型。
2)运算符的运算顺序是从左到右,+和-的级别低于其他的几个
3)i++,表示在使用后加1.++i表示在使用前先加1;i--和--i同理
4)+除了表示相加还可以起到连接作用
12,赋值运算符
1)=为赋值运算符。表示将右边的值,赋值给左边的变量。
注意,左边只能是变量、不同类型的数据不能直接赋值,需要转换为左边的类型。
2)i+=5;相等于i=i+5;
13,逻辑运算符
1)&&二元运算符,两边都是true结果才是true,有一个假即为假
2)||二元运算符,只要有一边是true结果就是true
3)!一元运算符,取反。
4)逻辑运算符的短路问题:逻辑运算符遵循从左至右的运算顺序,只要就导致了如果左边为运行通过,右边就不会继续的问题,称为短路。
14,三元运算符
1)书写格式:条件表达式?表达式1:表达式2;
2)用法:先计算条件表达式,如果成立则选择执行表达式1,否则执行表达式2
15,if条件判断、else if判断
1)书写格式:
if(比较表达式)
{
要执行的语句;
}
else if(比较表达式)
{
要执行的语句;
}
16,switch 语句
1)书写格式
switch(表达式)
{
case1:
执行的语句;
......
break;
}
2)注意如果多匹配的话,case可以写在一起
17,for循环
1)书写格式:
for(初始化表达式;循环条件表达式;循环后的操作表达式)
{
要执行的语句;
}
2)执行过程:先执行初始化表达式,然后判断条件表达式,成立就进入循环体执行要执行的语句并且在执行完毕后执行循环后的操作表达式。再去判断循环条件直到不满足。
18,while循环
1)书写格式:
while(条件表达式)
{
要执行的语句
}
2)执行过程:先判断条件表达式,成立则执行循环体内部的语句,直到条件表达式不成立。
19,do...while、break和continue的区别
1)do...while书写格式
do
{
要执行的语句;
}
while(条件表达式)
2)执行过程:先执行一次循环体内的语句,然后去做条件表达式的判断,如果成立就继续执行循环内的语句,直到条件表达式不成立。
3)break和continue都可以用到循环中,break是终止当前和整个循环,continue是终止当前循环,继续下一次循环。
20,数组
1)定义一个数组可以先声明后赋值,也可以声明赋值都在一个语句中。
如int[] i = new int[4];
i = {1,2,3,4};
或者int[] i = {1,2,3,4};
2)数组用下标来表示位置,如i[0],代表数据i的第一个元素。
3)数组的下标是从0开始计算的。
4)要输出数据的每个元素,需要使用循环
21,方法
方法就是一堆可以重复使用(复用)的代码块,无法确定的数据以参数的形式传进来,方法执行结束后以返回值进行返回。
1)书写格式:
返回值类型 方法名(要使用的参数及类型)
{
方法体;//可以没有内容
}
2)注意 加static关键字,表示是静态方法
3)方法可以没有返回值,若有,以return返回处理结果
4)不能在方法中定义方法、方法中的局部变量不能被调用的方法访问,只能以方法赋值的形式传进方法、方法内部对参数的赋值不会影响到调用者。
5)只要参数不同,或者返回值类型不同的条件满足,方法的名字是可以复用的,叫做方法的重载。
22,可变参数
1)书写格式:
static int Sum(params int[] i){};
2)调用时,编译器将数组内容自动装到数组里,表现出“可变”
3)可变参数必须是参数离别中的最后一个参数,如果不是,它后面的参数会被误认,编译不通过
23,递归
方法自己调用自己叫做递归。