C#基础(面向过程部分)知识点梳理-(根据苏坤老师笔记整理)

注意:这是我学C#(面向过程部分)的一些学习笔记,知识点繁多,有点琐碎,不过对于0基础的人看看还是不无裨益的

1)解决方案中可以包含多个项目,项目可以包含多个文件,文件有命名空间,命名空间里有类,类里有方法。方法里是我们写的程序。类文件以.cs结尾。解决方案以.sln结尾。项目文件以.csproj。一般打开解决方案。

 

2)using System;引用命名空间

namespace 定义一个命名空间

class 定义了一个类

Main 方法。Main方法是我们程序的入口方法,一般情况下有且只有一个Main方法

 

3)Console.WriteLine("");向屏幕输出。快捷输入,cw+tab

Console.Write("");不是另起一行

Console.ReadKey();停留等待用户从键盘输入,用户输入后,程序继续执行。

在c#中,每一句话以分号结束

生成(快捷键F6)能帮我们检测是否有语法错误

 

4)一些基本设置:①重置开发环境:可以使我们的开发工具恢复默认状态,工具→导入导出→重置开发环境。一般窗口关闭在视图中找;

②设置vs中的字体及大小:工具→选项

行号显示:工具→选项→文本编辑器→所有语言→行号打勾

启动项的设置:右键解决方案→属性→当前选定内容

 

5)c#中的注释:对我们写的程序进行解释,注释给人看的

第一种:单行注释:以//开始,到本行结束

第二种:多行注释:结束

第三种: 文档注释:

用于对类和方法进行注释,在类和方法前面连续输入///

 

6)下面一对指令,可以折叠一段代码:

#region和#endregion

 

7)一些常用类型:

数值,整型 int 10 (范围正负二十多亿)

非整数: double 3.14

非整数:decimal (财务)

非数值:char(字符型)只能存储一个字符,并且要求要用单引号 不能没有字符

String (字符串类型) 字符串,就是把0个或1个字符串链接起来,字符串用双引号

decimal:存储金钱 decimal的精度大于double

在c#环境开发环境中,直接写一个由小数点的数字,这个数字是double类型的。decimal在小数后面要加m或M

C#基础(面向过程部分)知识点梳理-(根据苏坤老师笔记整理)

8)变量声明的3种方法:

1.先声明,再赋值 int a;a=3;

2.定义变量时,直接赋值。int a=3;

3.一次声明多个同类型的变量,多个变量名称之间用逗号分隔,最后用分号结束

变量一定要,先声明,后赋值,最后使用(取值或者调用或者写这个变量名)

 

9)变量的命名规则:

1 必须以“字母”_下划线或者@符号开头(不能以数字开头)。

2 后面可以跟任意“字母”数字,下划线。

注意:

1 你起的变量名不要与c#系统中的关键字重复。

2 在c#中大小写是敏感的。

3 同一个变量名不允许重复定义(先这么认为,不严谨)

定义变量时,变量要有意义,要见名知意。

 

10)c#变量名编码规范

Camel 命名法:

首个单词的首字母小写,其余单词第一个字母都大写

Pascal 命名规范:每一个单词第一个字母都大写

如果使用到英文单词的缩写,全部用大写!

在方法Main中定义变量,要使用Camel命名法。

Camel命名法:例如:studentName  zsAge 只有一个单词,首字母小写,如;mane

Pascal命名规范:每一个单词第一个字母都大写如:SoftwareName,SystemVcrsion

 

11)“+”在c#中有两种意义

1 是数学中的加法运算;两边参与加法运算的数据类型为数字类型(int,double,decimal),则“+”表示数学上的加法意义

2 是链接的意思:两边参与加号运算的数据,有一个是字符类型,那么这个“+”就是连接的意义

 

12)占位符:由{数字}组成,数字由0开始编号

第一个占位符;{0}

第二个占位符;{1}

第三个占位符:{2}

......

占位符可以重复使用,有多个参数时,输出都是第一个参数中的内容,从第二个参数开始,都是用来替换第一个参数中的占位符的值,所以从第二个参数开始,要不要输出,就要看第一个参数中有没有相关的占位符,参数与参数之间用逗号隔开

 

13)转义字符:当我们需要在字符串中输入一些特殊字符时,比如:半角引号,换行,退格时就需要使用转义字符,转义字符是一个字符,他由一个+一个字母组成具有特殊意义的一个字符。

常用的转义字符:

n 换行;

b (backspace)退格

t tab键 由多个空格组成的一个字符,具有行与行之间的对齐功能

\表示一个

在字符串前加一个@符号有两种意义:

1 字符串中如果有,则不再理解为转义符;

2 使字符串可以转行

如果字符串前面加了@符号,在字符串上用两个双引号代表一个双引号

 

14)在c#中有五个算术运算符:+ - * / % 他们都是二元运算符,要求:参与的两个操作数的类型必须相同,并且经过运算后的结果也与操作数的类型相同。

在算术表达式中,如果要改变计算的优先级,用小括号,小括号可以无限极的出现,但必须成对出现。

 

15)发生自动转换的条件:

1 参与运算的两个数据类型必须相兼容

2 必须一边的数据类型表示范围小,一边的范围大,并且把小的转向大的不丢失精度。

当需要丢失精度的转换时,系统是不会帮我们自动转换,需要我们程序员来写代码完成转换,转换语法为:(数据类型名)待转换的值

强制类型转换,类型必须兼容

把字符串转换成数字int 变量名= Convert.Tolnt32(待转字符串)

把待转字符串转化成int类型后赋给变量。

 

16)try-catch的使用(简单用法)

try

{

有可能出现错误的代码;

}

catch

{

如果try中的代码出现异常,则进去catch中

}

如果try中的代码没有出错,则程序正常运行try中的内容后,不会执行catch中的内容,如果try中的代码一旦出错,程序立即跳入catch中去执行代码,那么try中的出错代码后面的代码不再执行了。

 

17)二元运算符

b=a++-10中,a取原值减10等到b值,然后a再自加1

b=++a-10中,a先自加1然后减10等到b值

一元运算符++或--比二元运算符优先级高

a=a+3←→a+=3 同理可得 -= *= /= %=

能够改变变量中的值的运算符:= ++ -- ==(等于),!=(不等于)

 

18)逻辑运算

逻辑与运算

表达式1&&表达式2

逻辑与连接的两个表达式,要能够求解成booll类型,一般情况下都是关系表达式。

整个逻辑与运算的结果也是bool类型

当两个表达式都为ture,其结果为ture,否则为false

逻辑或运算

表达式1||表达式2。两边只要有一个是true,其结果为true 

逻辑非!

(取反)这是一个一元运算符。用法:!(布尔类型的表达式)

&&的优先级大于||

C#基础(面向过程部分)知识点梳理-(根据苏坤老师笔记整理)

 

19)C#中结构大体可以分为三类:顺序结构,分支结构(判断结构),循环结构

分支结构(判断结构)

① if结构

基本语法:

if(条件)

{

语句1;语句2;

}

执行过程:首先判断条件的结果,如果条件为true,则执行语句1,如果条件为false,则跳过语句1,执行后面的语句。

注意:1 if后面括号中的条件,要能计算成一个bool类型的值。

2 默认情况下,if语句只能带1句话,即和if语句有关系的语句只有语句1

if-else结构

语法:

if(条件)

{语句1;}

else

{语句2;}

执行过程:

如果条件为true,则执行if后的语句,跳过else语句,如果条件为false,则跳过if后的语句,执行else后的语句。 

else与离他最近的if是一对

 

② switch-case

语法:

switch(表达式/变量)

{

case 值1: 语句块1;

break;

case 值2: 语句块2;

break;

default:语句块3;

break;

}

匹配项和default的位置没有关系,只和值有关系

 

20)循环结构

① while循环

语法:

while(循环条件)

{

循环体;

}

执行过程:

1 先判断循环条件,如果条件为true,则转向2,如果条件为false,则转向3

2 执行循环体,循环体执行完后,转向1

3 跳出循环,循环结束

注意:在循环体中一定要有一句能够改变循环体中的某个变量的值,使循环条件为false

n次循环,如果i从0开始,则循环条件为i

n次循环,如果i从1开始,则循环条件为i<=n

不要忘了写改变循环体中的条件(i++)避免死循环

特点:while先判断,再执行

 

② do-while循环

语法:

do{循环体;}

while(条件);

执行过程:

1 执行循环体,执行完转向2

2 判断条件是否成立,如果条件为true,则转向1,如果条件为false,则转向3

3 跳出循环,循环结束。

假如循环条件一开始就不成立,对于while循环,一次都不会执行,对于do-while循环体会执行一次,所以do-while循环体至少会执行一次。

特点:do-while为先执行,再判断

 

for循环

语法:

for(表达式1;表达式2;表达式3)

{循环体;};

已知循环次数,可以用for循环

一般情况下,表达式1用于定义循环变量和对循环变量赋初值

表达式2 循环条件

表达式3 用于改变循环变量的值

执行过程

1 执行表达式1,转向第2步

2 计算表达式2 如果表达式的值为true,转向第3步,如果表达式2的值为false,转向第n步

3 执行循环体 转向第4步

4 执行表达式3 转向第2步

5 循环结束

 

21)breakcontinue;

break

1 可以用于switch-case判断中。用于跳出switch

2 用在循环中,用于立即跳出(终止)循环

注意:在循环嵌套中,break跳出的仅仅是break所在循环中

continue;

用于循环中,程序一旦执行到continue语句,立即结束本次循环(就是不再执行循环体中continue下面的语句了)直接进行下一次循环(do-while/while直接进行下一次循环条件的判断,如果条件成立,则再次进入循环,对于for循环,先执行表达式3,再判断循环条件是否成立)

 

22)三元表达式:表1?表2:表3

执行过程:

首先计算表达式1,表达式1应该是一个能够计算成bool类型的值,如果表达式1的值为true,则表达式2的值做为整个表达式的值,如果表达式1的值为false,则表达式3的值为整个表达式的值。

表达式2和表达式3的类型一定要相同或相兼容!

 

23)常量:(不可改变的量)

语法:

const  类型 常量名 = 常量值;

常量只能在初始化时赋值,其他过程不能赋值

 

24)枚举

让我们定义一种枚举类型,并且在定义这种类型时我们要指定这个类型的所有值。

语法:

enum 自己定义的类型名称{值1,值2,值3,...值n};

枚举的定义,一般和类定义在同一个级别,这样在同一个命名空间下的所以类型都可以使用这个枚举了。

枚举的作用:

1 限制用户不能随意赋值,只能在定义枚举时列举的值中选择

2 不需要死记每一个值是什么,这需要选择相应的值。

注意:定义枚举时,值不能是int类型

枚举类型的变量都可以强制转换成int类型。

枚举的值在定义时是有一个默认编号的,编号从0开始

如何把一个字符串转换成枚举类型:

(自己定义的枚举类型)(Enum.Parse( typeof(自己定义的枚举类型),"带转换的字符串");

 

25)结构

为什么要使用结构(类一个层次)

1 为了存储一个人的信息,要声明一组变量,当我们存储n个人的信息时,就要声明n组变量,麻烦

2 存储一个人信息的这几个变量间没有关系,容易乱

语法:    

访问修饰符 struct 结构名

{

       定义结构成员

}

 

例如:

public struct Person

{

       public string Name;

       public int Age;

       public string Hobby;

       public int Popularity;

       public void SayHi()

       {

          // ….

       }

}

定义好一个结构后就可以直接声明相应的变量了,声明好变量后,通过 变量名.成员名 就可以访问变量了。

 

26)数组:可以帮我们一次声明多个同类型的变量,这些变量在内存中是连续存储的。

数组声明语法:

数据类型[]数组名=new数据类型[数据长度];

例如:int[]score=new int[5];就声明了一个长度为5的数组,数组叫score

通俗点说:就是声明了一个数组,里面包含5个lnt类型的变量,5个变量叫做数组的元素

如何访问数组:通过下标(索引)来访问数组,

比如,我们要向第0个元素赋一个3,就可以这么写:score[0]=3;

简便方法:int[]number={1,2,3} 

通过 数组名.Length 可以获得数组的长度

 

① 数组中一共N个元素进行头尾交换

1 交换n/2

2 在一个循环中,第i个元素与第length-i-1进行交换 

string temp;

for(inti-0;i

{

//交换数据

temp=numbers[i];

temp=numbers[i]=numbers[numbers.Length-i-1];

numbers[numbers.Length-i-1]=temp;

}

//输出

for(int i=0,i

{

   Console.WriteLine(numbers[i]);

}

 

②数组元素倒输出

for(int i=numbers.length-1;i>=0;i--)//先给i赋了一个数组长度-1也就是最大下标的数字,对应的是最后一个数字,然后i--

{

   Console.WriteLine(numbers[i]);

}