让我们继续学习“C#中的方法”吧!
- C#中的方法
- 首先,我们可以重新温习一下“方法的重载”:
概念:在同一个作用域内,可以声明几个功能类似的同名函数。调用时根据不同的实参列表选择相应的函数。
重载的特点是:函数名相同,参数表不同。
参数列表不同主要体现在参数个数或参数的数据类型不同。在调用重载的方法时系统是根据所传递参数的不同判断调用的是那个方法。
举例:创建一个名为SumUtils的类,在类中分别定义计算两个整数、两个小数、两个字符串类型的和。
- 方法的参数拓展
- 实参和形参
方法中的参数分为实际参数和形式参数,实际参数被称为实参,是在调用方法时传递的参 数;形式参数被称为形参,是在方法定义中所写的参数。
举例:
其中对于Add方法来说, 变量num1和num2是实际参数,称为实参。 a和b是形式参数,称为形参。
- 值传递和引用传递
C#中参数传递的方式有两种:值传递和引用传递
值传递:
值传递是指在调用方法时将实际参数复制一份传递到方法中,这样在方法中如果对参数进行 修改,将不会影响到实际参数。
对于值类型的数据,如果没有特殊说明,那么在方法调用时按照值传递的方式进行参数的传 递。
引用传递:
引用传递是指在调用方法时实际参数和形式参数都指向同一个内存,这样在方法中如果对参 数进行修改,将会影响到实际参数。
前面我们讲到C#数据类型分为值类型和引用类型。 那么在方法调用时,值类型一般都是以值传递的方式,引用类型都是以引用传递的方式。
举例:
- ref关键字和out关键字
ref:当方法定义的时候在形参前面添加ref关键字表明是以引用的方式进行传参。(参数传递 时也需要添加ref关键字)
使用场景:需要以引用的方式传递值类型参数。
修改上一个案例的ChangeValue方法:
运行后可以看到,对于值类型,在参数列表添加ref关键字之后,达到了引用传递参数的效 果,在方法内部对形参的变动可以影响到实参。
拓展:
引用类型使用ref传参和不适用ref传参需要注意的地方:
a. 当引用类型不使用ref传参,在方法内部重新new一个对象后再进行操作,则该操作对实 参没有影响。
b. 当引用类型使用ref传参,在方法内部重新new一个对象后再进行操作,则相当于将实参 指向一个新的对象。
out:out关键字修饰的参数为输出参数。(参数传递时也需要添加out关键字) 使用场景:需要有多个返回值的情况。