首先,方法是把一些相关的语言组织在一起,用来执行一个任务的语句块.每一个C#程序,至少有一个带有Main方法的类.
需要使用方法时,我们需要先定义方法,再调用方法.
C#中定义方法
当定义一个方法时,从根本上说是在声明它的结构的元素,在C#中,定义方法实例如下:
显示一个函数FindMax,它接受两个整数值,并返回两个中的较大值,它有public访问修饰符,所以它可以使用类的实例从类的外部进行访问.
C#中调用方法
您可以使用方法名调用方法.
上边代码就展示了方法的调用的一种,还有一种调用方法,使用类的实例从另一个类中调用其他类的公有方法.
代码如下:
该代码最后输出结果与上文代码一致,均为200;
递归方法调用
一个方法可以自我调用,这就是所谓的递归.
实例如下:
递归函数计算一个数的阶乘很好的展示了递归方法的调用.
参数传递
当调用带有参数的方法时,需要向方法传递参数.在C#中,有三种向方法传递参数的方式:
方式 | 描述 |
值参数 | 这种方式复制参数的实际值给函数的形式参数,实参和形参使用的是两个不同内存的值.在这种情况下,当形参的值发生改变时,不会影响实参的值,从而保证了实参数据的安全. |
引用参数 | 这种方式复制参数的内存位置的引用给形式参数.这意味着,当形参的值发生改变时,同时也改变实参的值 |
输出参数 | 这种方法可以返回多个值. |
按值传递参数
这是参数传递的默认方式.这种方式下,当调用一个方法时,会为每个值参数创建一个新的存储位置,实际参数的值会复制给形参,实参和形参使用的是两个不同内存中的值,所以,当形参的值发生改变时,不会影响实参的值,从而保证了实参数据的安全,演示代码如下:
按引用传递参数
引用参数是一个对变量的内存位置的引用.当按引用传递参数时,与值参数不同的是,它不会为这些参数创建一个新的存储位置,引用参数表示也提供给方法的参数实际参数具有相同的内存位置.
在C#中,使用ref关键字声明引用参数,实例如下:
按输出传递参数
return语句可用于只从函数中返回一个值,但是,可以使用输出参数来从函数中返回两个值,输出参数会把方法输出的数据赋值给自己,其他方面与引用参数相似
实例代码:
当提供给输出参数的变量不需要赋值则需要从一个参数没有指定初始化的方法中返回值,输出参数特别有用.
示例代码如下:
这里讲一下ref和out的区别
一个用关键字ref标示,一个用out标示.
主要是牵扯到数据是引用类型还是值类型.
一般用这两个关键字是想调用一个函数将某个值类型的数据通过一个函数后进行更改.传out定义的参数进去的时候这个参数在函数内部必须初始化,否则是不能进行编译的.ref和out都是传递数据的地址,正因为传了地址,才能对源数据进行修改.
一般情况下不加ref或者out的时候,传值类型的数据进去实际上传进去的是源数据的一个副本,也就是在内存中新开辟了一块空间,这里面存的值是与源数据相等的,这也就是为什么在传值类型数据的时候你如果不用return是无法修改原值的内容,但是你如果用了ref或者out,这一切问题都解决了,因为他们传的是地址.
out比起ref来说,还有一个用法就是可以作为多返回值来用,都知道函数只能有一个返回值,在C#中,如果你想让一个函数有多个返回值,那么out能很容易解决.