C#基础知识篇(二)-----------C#笔记

1.关系运算符(比较运算符)

1.关系运算符有哪些?

    • >,<
    • ==,!=
    • >=,<=

2.关系运算符的作用?

用于比较两个事物之间的关系。

3.什么叫关系表达式?

由关系运算符连接起来的式子叫关系表达式。

注意:所有的关系表达式最终都能计算成一个bool类型的值。

2.逻辑运算符

1.逻辑表达式有哪些?

逻辑与:&& ,逻辑或:||  ,逻辑非:!(又叫取反)

2.逻辑运算

语法:表达式1 逻辑运算符  表达式2

逻辑运算符连接的两个表达式,要最终能求解成一个bool类型的值(一般情况下都是关系表达式),所以整个逻辑运算的结果也是bool类型。

3.if结构

1.if结构的基本语法:

If(条件)

语句1;

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

注意:if后面括号中的条件,要能计算成一个Bool类型的值,默认情况下if语句只能带一句话(和if有关的语句只有语句1)在If语句中如果想让if带多句话则用{}把if带的多句话组成语句块。

If(条件)

{

语句块;

}

2.if-else结构

语法:if(条件)

{

语句块1;

}

else

{

语句块2;

}

执行过程:如果if的条件为true则执行if带的语句块1,并且跳过else带的语句2。若条件为false则是跳过if带的语句块1,执行else带的语句块2。

3.if-else-if结构

语法:if(条件1)

{

语句块1;

}

else if(条件2)

{

语句块2;

}

……

else if(条件n)

{

语句块n;

}else

{

语句块n+1;

}

执行过程:在if-else-if语句中,只有当上一个条件不成立时,才会进入下一个if语句,并进行If语句后面的条件判断,一旦有一个if后面的条件为true则执行此if所带的语句块,语句块执行完成后程序跳出

if-else-if,if-else-if中如果所有条件都不成立,则执行最后的else(可有可无)。else与离得最近的if是一对。

4.Switch语句

1. 语法:

执行过程:首先计算表达式,然后根据计算结果与case后面的值匹配,如果有匹配项,则执行匹配项后面的语句,直到break结束跳出switch-case。如果所有的值都不匹配,那么有default的则执行default后面的语句。

直到break结束。如果没有default,则跳出switch-case什么都不执行。

注意:每一个case后面跟一个break;

5.while循环

1.语法:

while(循环条件)

{

循环体;

}

1. 执行过程:

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

2. 执行循环体,执行完了转向1。

3. 跳出循环循环结束。

注意:在while循环中一定要有那么一句话来改变循环变量的值,使循环变量终有那么一个时候为false。(不然死循环)

6.do-while()循环

1. 语法:

do

{

//循环体

}while(循环条件);注意:这里一定要有分号。

2.执行过程:

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

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

3.跳出循环,循环结束。

3.while与do-while的区别:

如果条件一开始就为False,对于while循环,循环体一次都不会执行。对于do-while循环体执行一次。即:while先判断后执行,do-while先执行一次再判断。

7.for循环

1. 语法:

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

{

执行语句;(循环体)

}

2. 执行过程:

1. 计算表达式1转向2

2. 计算表达式2(循环条件)若为true转向3,false转向5

3. 执行循环体转向4

4. 执行表达式3转向2

5. 循环结束

一般情况下:

表达式1:用于定义循环变量和对循环变量赋初值

表达式2:循环条件

表达式3:用于改变循环条件的值

注意:一般情况下for循环用于已知次数的循环中。

8. foreach循环

a. 语法:

foreach(数据类型 变量名 in 数组/集合)

{
                          循环体;

}

其中in关键字前面就是定义一个迭代变量,in后面就是实现了IEnumerable 或者 IEnumerable<T> 接口的对象

b. foreach遍历数组的简单原理:“in数组名”会将数组中的元素从第0个开始到最后一个遍历出来赋给迭代变量,所以迭代变量直接就是数组元素的值。

注意:迭代变量的数据类型必须要与数组中元素类型一致。

c. 执行过程:每次遍历的时候将当前遍历出来的数组元素拿出来赋给迭代变量,然后再执行循环体。

d. for循环和foreach循环的区别与联系:

1. 相同点:

都可以遍历数组中的元素。

2. 不同点:

1> for循环遍历出来的是数组元素的下标,foreach遍历出来的直接就数组元素。

2> for循环可以从指定下标开始遍历,而foreach只能从第0个开始直到最后一个结束。

3> 在for循环中可以更改遍历出来元素的值,而在foreach中不能更改遍历出来的值(迭代变量的值)。

4> for循环中可以得到当前遍历出来的值以外的值(即上一个值和下一个值,因为for是通过遍历索引来取值的)而foreach只能得到当前遍历出来的元素值。因为foreach是直接遍历数组中元素的值。

e. 什么情况下用foreach来遍历数组中的元素?

1. 从头开始遍历直到最后一个。

2. 只取值不改值

9.break,continue,goto跳转语句

1. break:

a.可以用于switch-case中,跳出switch。

b.用在循环中,用来立即跳出(终止)循环(跳出的是当前循环)。

2. continue

continue用于循环中,程序一旦执行到continue就立即结束本次循环直接进入下一次循环(for有点特殊,先对循环变量操作后在判断进行)。

3. goto

语法:

语句1;

goto lable;

语句2;

……..

语句n;

lable:;

Console.WriteLine(“我只执行了语句1其它的都跳过了!”);

Console.ReadKey();

文字叙述语法:先定义一个标签面后面加冒号(如:lable:),再goto标签名,程序将直接跳到标签名后面的语句继续执行。

10.三元表达式

1. 语法:

表达式1?表达式2:表达式3;

执行过程:首先计算表达式1(表达式1要最终能被计算成一个bool类型的值),若表达式1的值为true,则表达式2就作为整个三元表达式的值;若为false则表达式3就作为整个三元表达式的值。

注意:表达式2和表达式3的类型一定要相同或者相兼容。

11.数组

1. 数组作用:

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

a.一维数组

1.声明:数据类型[] 数组名称=new 数据类型[数组长度];

注意:数值型数组一旦声明,里面的每一个元素都被初始化0,(即赋默认值0)。引用型数组一旦声明,里面的元素都会被初始化为null。

2. 一维数组的访问:数组名[下标]。

3. 数组初始化器“{}“的用法:

a.Int[] number={1,3,9}//声明时赋值.

b.Int[] number=new int[3]{5,8,3}(注:初始化器里面的元素个数必须跟数组的长度相等,若不相等就会报错) 如下:

Int[] number=new int[5]{5,8,3}->错的!初始化器里面的元素个数是3数组长度是5,因3!=5所以报错。

c.Int[] number=new int[]{5,8,3}->对的。因为初始化器会自动帮我们判断数组长度,所以可以不写数组长度。

b.二维数组

二维数组: 是用来声明指定行指定列的1个表格结构.

a.语法:数据类型[,] 数组名称=new 数据类型[行数,列数]

如:int[,] arr = new int[3, 4];

当执行到这句话的时候,就表示声明了1个3行4列的1个表格结构数据。

b.元素个数:二维数组的元素个数=行数*列数;

c.为元素赋值:数组名[行数,列数]=值;

d.取值:与赋值相对应。1>即:数组名[行数,列数];

2>通过函数GetValue(行数,列数);

e.Length 属性的值代表数组中元素的个数,若是二维数组Length的值等于=行数*列数;

f.数组有个GetLength(参数)方法,传入0得到行数,传入1得到列数。(GetLength中参数的本质是维度,该方法即:得到指定维度的长度)

g.利用数组初始化器为二维数组赋值:

如:int[,] arr = { { 1, 1, 3, 5 }, { 4, 5, 6, 4 }, { 7, 8, 9, 6 } };

h. 数组的Rank属性可以得到数组的维度。

如:Console.WriteLine(arr.Rank);就会输出2

i.遍历:foreach最简单,直接遍历值。

如:使用for循环遍历二维数组

for(int i =0;i<arr.GetLength(0);i++)

{

for(int j = 0;j<arr.GetLength(1);j++)

{

arr[i,j]

}

}

C.交错数组

1.交错数组的本质是一个一维数组,只不过这个一维数组中的元素是一个数组类型。

2.交错数组的声明:

数据类型[][] 数组名称=new 数据类型[数组长度][](因为交错数组的元素类型是数组类型,为方便记忆我们可以把蓝色字体看成一个数组类型

这样就跟我们声明普通数组是一样的,差别就是把数组长度写在前面一个[]中)

如:int[][] num=new int[3][];

3.为交错数组赋值:

因为交错数组是一个一维数组并且这个一维数组的数据类型是数组类型,所以给交错数组赋值的时候我们应该给一个数组。即我们可把交错数

组看成是行数确定而每行的列数不确定。

用数据初始化器赋值:

int[][] arr = new int[3][] { new int[] { 12, 11, 11 }, new int[] { 1, 2, 3, 456, 1 }, new int[] { 12, 13, 14 } };

解释:红色字体这部分等价于:int[] arry= new int[] { 12, 11, 11 },我们依然赋值时赋的是数组,只是把数组名省略了。

4.遍历:

因为交错数组里面的元素是一个数组,所以我们在用foreach遍历的时候需要遍历两遍,因为第一遍遍历出来的元素依然是个数组,第二遍才是值;而for循

环在这里显得还简单些,因为本质是一维数组,第一次循环出来的元素是个数组,第二次循环把第一次循环的值(数组)当做第二个循环的数组即可。

d.数组中常用的函数

1>Array.Reverse(数组名);反转函数,将数组中所有元素的顺序倒过来(反过来。倒数第一个变第一个,第一个变倒数第一个)。只支持一维数组。

2>Array.Indexof(数组名,指定元素);求数组中指定元素的下标,如果没有则返回“-1”,若果有就返回该元素在数组中的下标。只支持一维数组。(该函数的返回类型是int)。

3>Contains()函数,语法:数组名.Contains(元素值);判断数组中是否包含某一元素。该函数的返回值类型是bool类型,包含为true,不包含为false。

注意:被检测的元素类型必须与数组中元素类型一致,并且此函数只支持一维数组。

C#基础知识篇(二)-----------C#笔记,布布扣,bubuko.com

时间: 2024-10-21 04:15:56

C#基础知识篇(二)-----------C#笔记的相关文章

每日刷题191130 --基础知识篇 二叉搜索树

休息了两天,状态恢复了一下,补充点基础知识. 二叉搜索树 搜索树数据结构支持许多动态集合操作,包括Search,minimum,maximum,predecessor(前驱),successor(后继),INSERT和DELETE等.因此我们使用一颗搜索树既可以作为一个字典又可以作为一个优先队列.且二叉搜索树上的基本操作所花费的时间与这棵树的高度成正比.二叉搜索树有两个很重要的变体,红黑树与B树,这个我们之后有机会再补一篇文章. 顾名思义,一棵二叉搜索树是以一棵二叉树来组织的.如图所示,这样的一

C#基础知识篇(五)-----------C#笔记

一.值类型和引用类型 1>值类型和引用类型将我们学过的数据类型划分成了两部分. 划分的依据是不同类型的数据在内存中(堆栈)存储的结构不同. 2>值类型:所有的数值类型:long int short byte ulong uint ushort sbyte decimal duoble float char bool 枚举 结构 3>引用类型:string,arry(数组),类(class) 4>不管是值类型还是引用类型赋值都是将数据copy一份将副本赋给变量,不同的是值类型拷贝的是

C#基础知识篇(四)-----------C#笔记

一.类 1. 什么叫做类? 类是具有相同特征的一类事物统称.所以类是一种抽象,即不是一个实体(我们把类看做模板). 2. 什么叫做对象? 对象是根据类的模板创造出来的一个实体,它具有类里所有的特征,一个也多不得,一个也少不得.少了就不叫这个类的成员了,多了也不是!假如张三有变身这个功能,那么张三就不属于人. 记住对象是根据模板创建的,模板有什么它就有什么,不会多也不会少! 3. 什么叫做字段(或者是成员变量)? 我们把定义在方法的外面,类的里面(即:类中)的变量称之为字段或者说是成员变量. 4.

C#基础知识篇(三)-----------C#笔记

一.方法 1. 什么叫做方法? 方法就是对一段代码的重用的机制. 2. 方法的定义: [访问修饰符] [static] 返回值类型 方法名() { 方法体; } 注意:用[]修饰的都是可选的. 3. 需要注意的细节: 命名规则:方法名开头大写,参数名开头小写,参数名.变量名要有意义. 4. 方法的参数: 1>在方法名后面括号内定义变量就叫做定义这个方法的参数(形参). 2>在方法()中我们定义多个参数时,参数之间用逗号分隔,不管参数之间的类型是否相同,都不能像定义同类型的多个变量时:如:int

C#基础知识篇---------C#笔记

   一.变量         1.什么叫做变量?            我们把值可以改变的量叫做变量.          2.变量的声明:            语法:[访问修饰符] 数据类型 变量名; 如: int number=10://声明了一个整型的变量number.            注意:一次声明多个变量之间要用逗号分隔.                  如:int number1,number2,number3....;          3.变量的赋值:        

《nodejs+gulp+webpack基础实战篇》课程笔记(四)-- 实战演练

一.用gulp 构建前端页面(1)---静态构建 npm install gulp-template --save-dev 通过这个插件,我们可以像写后台模板(譬如PHP)一样写前端页面.我们首先学习一下写法. 现在我们创建一个新任务:创建一个裸的index.html文件,然后在body里面写上 ,我的年龄是:<%= age %> 下载好gulp-template,我们引用并配置 var gulp_tpl = require("gulp-template"); gp.tas

《nodejs+gulp+webpack基础实战篇》课程笔记(三)--webpack篇

webpack引入 前面我们简单学习了gulp,这时一个前端构建框架---webpack产生了(模块打包) 它能帮我们把本来需要在服务端运行的JS代码,通过模块的引用和依赖打包成前端可用的静态文件.(这里有需要了解一下CommonJS规范,具体请自行查看http://commonjs.org). 安装webpack: npm install -g wabpack //这里我们采用全局安装,保证每个项目中都能使用到 设置配置文件:  在项目目录下,新建一个webpack.config.js文件 m

《nodejs+gulp+webpack基础实战篇》课程笔记(六)--附加课

一.多页面分离资源引用,按需引用JS和css 我们前面实现了以下功能:1.新建了一个login模版(用到htmlWebpackPlugin).2.分别把main.js和login.js.reg.js分开写.3.学习了css加载器.我们通过webpack可以打包js文件.自动注入js和CSS引用. 那么我们要加载多页面如何操作呢?现在我们就在/src/tpl 文件夹下新件一个index.html文件,在CSS加入index.css,随便写两个样式,然后在/src/下新建一个index.js,随便写

web基础知识(二)关于ajax,Jquery传值最基础东西

这次还是一些关于jQuery,ajax前后台传值情况, 是自己在做点小东西过程中遇到的,记录下来为自己也方便别人 列表很多,点击编辑和删除无刷新的进行操作的话,肯定是ajax了,因为无刷新嘛,可能有的朋友会说直接传值,传ID到Action删除不就OK了,用得着写js么,纯粹自己找麻烦嘛. 其实这里重点是无刷新的啦, 这个上传后到这里来,有个预览功能,把本次的全部预览,如果全部刷新的话,那么刚才上传的就不会在这个页面了,so,还是采用无刷新的比较好. 点击编辑跳到一个新的页面的时候有两种方法可以选