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

一.方法

1. 什么叫做方法?

方法就是对一段代码的重用的机制。

2. 方法的定义:

[访问修饰符] [static] 返回值类型 方法名()

{

方法体;

}

注意:用[]修饰的都是可选的。

3. 需要注意的细节:

命名规则:方法名开头大写,参数名开头小写,参数名、变量名要有意义。

4. 方法的参数:

1>在方法名后面括号内定义变量就叫做定义这个方法的参数(形参)。

2>在方法()中我们定义多个参数时,参数之间用逗号分隔,不管参数之间的类型是否相同,都不能像定义同类型的多个变量时:如:int a,b,c,d;定义参数只能

一个数据类型后面跟一个变量名.因为参数的类型可以不同,所以肯定不支持定义多个同类型的变量那样定义)。

3>方法的参数是可以带默认值的,如果方法的参数带了默认值,那么我们在调用这个方法时就可以不为这个参数传值。如果不为其传值那么将使用的是参数默认值,

如果传了参数,参数的值就是实参的值。

4>如果方法的参数有的带默认值,有的不带默认值,那么带默认值的参数必须出现在参数列表的最右侧。若方法中有带默认值的参数,那我们在传参的时候可以个数不一致,

但需要赋值的参数的类型位置要相对应。

5>显示的为方法的形参赋值.语法:方法名(形参名:实参)。用显示方法为参数赋值可以不根据顺序来赋值。但个数和类型要相对应。

6>params是1个关键字.只能用来修饰方法的参数,并且被修饰的参数只能是一个一维数组,其它参数都不行。

a.在给params修饰的参数(一维数组)赋值时,可以赋一个一维数组,但也可以直接给元素的值,每个值用逗号分隔。因为C#编译器在编译的时候会把这些数据封装到一个数组

(只是这个数组的长度由调用者决定),所以实际上参数还是只有一个数组,传递的时候也是以数组传递的。

b.被params修饰的参数必须要放在参数列表的最后.因为params修饰的一维数组长度不确定,若后面还有参数编译器无法识别哪些是属于params修饰的参数的,还是其他参数的。

所以只能放到最后。

c.被params修饰的参数在参数列表中最多只能出现1次.

d.在为params修饰的参数传递的时候,也可以1个也不传.,因为数组长度可以为0;

e.在方法的内部通过判断数组的长度是否为0 来判断用户是否传递了元素的值.

f.如果构成重载,那么在调用的时候 会先去匹配不带params的方法. 如果不带params的不能匹配 才会再去找带params的匹配

二.返回值

a.为什么会有返回值?

因为当调用者需要用到方法中的参数时,我们就需要方法给我们返回参数的值了。

1>return是一个关键字,在方法中用来返回方法的返回值和立即结束本(当前的方法,即return所在的方法)方法的。语法:return 值;

2>ref 是1个关键字, 只能用来修饰方法的参数(言外之意就是变量等不能被ref修饰). 任意的参数都可以使用ref来修饰.

1> 如果方法的参数带了ref,那么实参也要带上ref

2> 当我们为ref修饰的形参赋值时,赋的不是传进来的实参值,而是实参变量的内存地址。所以这就是为什么我们在方法内部修改局部变量的值外边也发生了改变。

因为实际上我们改变的就是外面实参的值。

3> 当我们在为ref修饰的形参传值时,在传值前必须把实参变量进行初始化。

4> 在为ref形参传递值的时候,必须要给1个变量 不能给1个常量,因为ref传递的是变量的地址.

5> 被ref修饰的参数不能带默认值。因ref要求传递变量地址,而实参不是变量地址。

3>out是1个关键字, 只能用来修饰方法的参数(言外之意就是变量等不能被out修饰). 任意的参数都可以使用out来修饰.

1> 如果方法的参数带了out,那么实参也要带上out

2> 当我们为out修饰的形参赋值时,赋的不是传进来的实参值,而是实参变量的内存地址。所以这就是为什么我们在方法内部修改局部变量的值外边也发生了改变。

因为实际上我们改变的就是外面实参的值

3> 被out修饰的参数,可以在方法外面不赋值,但在方法内部一定要赋值,并且是在使用之前就要赋值。

4> 在为out形参传递值的时候,必须要给1个变量 不能给1个常量,因为out传递的是变量的地址.

5> .因为out要求传递变量的地址,所以out修饰的参数不能带默认值.

4>ref和out异同:

1> ref在实参传递之前实参必须要有值。而out可以没有值。

2> out在方法内部并且在使用之前就必须赋值,而ref在内部可以不赋值。

3> 总结:即ref的实参在外面必须赋值,而out的参数必须在内部使用前赋值。不管是ref还是out它们都是传递的变量地址,它们都是修改的实参的值。

总结返回值:

通过return我们可以返回一个数据,或者是一个数据集。但这要求数据的数据内型必须相同或者是相兼容。所以return一般用于只有一个返回值或者是数据类型相同的一个集合。

而ref和out是通过参数来返回值,它们一般用于需要返回多个不同数据类型的值。

三. 方法的调用

1> 在同一命名空间下,由static修饰的方法我们可以通过:类名.方法名(参数)来调用。

2> 在同一命名空间下没有被static修饰的方法都必须通过new关键字创建实列后,用实列名.方法名(参数)调用。

3> 不在同一命名空间下的,先必须把命名空间引进来,再来创建对象的实列来调用方法。静态方法就直接:类名.方法名

四.方法的重载

a. 什么叫做方法的重载?

一般在同一个类中(或者跟父类中),方法名相同,并且方法的参数个数不同,或者相对应位置上的参数类型不同,才能构成重载。

b.方法的重载跟返回值没半点关系,只和参数有关(前提方法名相同)

五.变量的作用域

1. 局部变量:

a. 什么叫做局部变量?

方法中定义的变量叫做局部变量,其作用域从定义开始,到其所在的大括号结束为止。

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

时间: 2024-10-10 22:18:13

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

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.变量的声明:            语法:[访问修饰符] 数据类型 变量名; 如: int number=10://声明了一个整型的变量number.            注意:一次声明多个变量之间要用逗号分隔.                  如:int number1,number2,number3....;          3.变量的赋值:        

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

1.关系运算符(比较运算符) 1.关系运算符有哪些? >,< ==,!= >=,<= 2.关系运算符的作用? 用于比较两个事物之间的关系. 3.什么叫关系表达式? 由关系运算符连接起来的式子叫关系表达式. 注意:所有的关系表达式最终都能计算成一个bool类型的值. 2.逻辑运算符 1.逻辑表达式有哪些? 逻辑与:&& ,逻辑或:||  ,逻辑非:!(又叫取反) 2.逻辑运算 语法:表达式1 逻辑运算符  表达式2 逻辑运算符连接的两个表达式,要最终能求解成一个boo

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

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

《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

Android Camera开发之基础知识篇

概述 Android框架支持设备的相机拍照和录像功能,你的应用可以直接调用系统的Camera应用来拍照或者录像(比如微信拍照),当然也可以利用Android系统提供的API开发一个Camera应用来实现相机拍照和录像功能(比如市面上流行的360相机).此篇文章主要记录相机开发有关的基础知识,以及带着自己的理解翻译Camera官方文档,如有翻译不恰当支出,还请指出改正.当然我会开一个有关相机开发的一个系列,该系列主要内容包括如下: 相机基本预览拍照功能. 实现相机的Flash,Hdr,滤镜,前后摄

《nodejs+gulp+webpack基础实战篇》课程笔记(八)--模板化开发演练:分离公共头文件

还是先来安装本课需要的插件: npm install raw-loader --save-dev //示例:var header = require("xxx.html");就会把html的内容读取出来 这是一个webpack加载器,可以把文件原样返回为字符串. 这里补充下使用加载器的两种方法: 1.在我们的webpack配置文件中写上 {test:/\.html$/,loader:"加载器名称"} //这代表所有html后缀均会使用这个加载器来处理 2.在requ

《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,随便写