C#基础 一(方法详解)

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C#基础 一(方法详解)相关的知识,希望对你有一定的参考价值。

需要知道:类和方法的关系

技术分享

 

 

方法和参数修饰符

   自定义方法可以有或没有参数,也可以有或没有返回值。可以被各种关键字(static、virtual、public、new等)修饰以限制其行为。

                                   

                   C#参数修饰符

 无                                       如果一个参数没有用参数修饰符标记,则认为它将按值传递,这意味着被调用的方法收到原始数据的一份副本。

 out                                     输出参数被调用的方法赋值因此它按引用传递。如果被调用的方法没有给输出参数赋值,就会出现编译器错误。

 ref                                         调用者赋初值,并且可以由被调用的方法可以选地重新赋值。如果被调用的方法未能给ref参数赋值,也不会编译器错误。

 params                                 这个参数修饰符允许将一组可变数量的参数作为单独的逻辑参数进行传递。方法只能有一个params修饰符,而且必须是方法的最后一个参数

 

默认的参数传递行为

 技术分享

技术分享

技术分享

 

 引用类型:

技术分享

 技术分享

技术分享

 

不管这里传递的是值类型还是引用类型,传递之前和之后的值是不会变的。Add()方法里面操作的是数据的副本,不会影响到数据本身。就像在方法里面申明了一个参数来接受传递的参数,在方法里面操作的是新申明的参数如不是我们传递进去的参数。

 

 Out修饰符

   out修饰符叫做输出参数。定义为带有输出参数(通过关键字out)的方法有义务在退出这个方法之前,给参数赋一个恰当的值。调用一个带有输出参数的方法也需要使用out修饰符。

  技术分享

技术分享

规则:

声明一个变量不赋值(赋值编译不会错)

把此变量以Out形式传到方法里面

调用方法后此变量就有值

 

 ref修饰符

   如果希望方法可以对在调用者作用域中声明不同数据进行操作(通常改变它的值),例如:排序和交换例程,就需要使用引用参数。

 输出参数不需要在它们被传递给方法之前初始化,因为方法在退出之前必修为输出参数赋值

 引用参数必须在它们被传递给方法之前初始化,因为是在传递一个对已存在变量的引用。

ref例子:

 技术分享

技术分享

 规则:

声明一个变量(初始化)

把参数以ref形式传递

方法里做操作

 

 

Params修饰符

  C#使用params关键字支持参数数组的使用。params关键字可以把可变数量的参数(相同类型)  作为单个逻辑参数传给方法。

 技术分享

技术分享

 

: 为了避免歧义(多重定义),C#要求方法只支持一个params参数,而且必须是参数列表中的最后一个参数

 

定义可选参数

   可选参数就是声明参数的时候已经赋值了,相同与有个初始值,调用者可以根据需求需不需要改变这个值。

 技术分享

技术分享

 :可选参数的值是确定的而不是由编译的时候产生的。可选参数必须放在方法签名的最后

 

 使用命名参数调用方法

   命名参数允许你在调用方法时以任何顺序指定参数的值。因此,你可以使用冒号操作符通过名称来指定 参数

技术分享

 技术分享

 命名参数配合可选参数使用比较有效果。

 

方法重载

   定义了一组名字相同的方法时,它们的参数数量(或类型)不同,这样的方法就叫做被重载。

 例如:计算两个数的和,这就相同于一个重载

技术分享

 

以上是关于C#基础 一(方法详解)的主要内容,如果未能解决你的问题,请参考以下文章

《C#零基础入门之百识百例》(八十三)ArrayList数组列表详解 -- 代码示例

《C#零基础入门之百识百例》(八十三)系统类ArrayList数组列表详解 -- 代码示例

C#详解事件

C#基础系列——多线程的常见用法详解

C#入门详解(11)

C#设计模式详解——Template Method(模板方法)