从C++学C# [4] 方法(函数)参数

C#提供了比C++更灵活的参数表及传参方式。


提供[argument]:[value]的传参方式

对如下声明:

public void CreateRectangle(int x, int y, int width, int height);
有如下两种调用方式:
CreateRectangle(10,20,30,30);
CreateRectangle(x: 10, y: 20, width: 30, height: 30);

显然后者具有更好的可读性,且对传参顺序无要求,因此特性可以实现与C++不同的功能。


拥有与C++类似的默认参数写法

一个带有默认参数的声明:

public void Test(int n, int opt1 = 11, int opt2 = 22, int opt3 = 33);

因上节提及的传参方式,使的C#可以只修改位于后方的默认参数,C++则不行。如只修改opt2和opt3。

Test(1, opt3: 3, opt2: 2);

C#对于可变参数使用params配合数组关键字实现

可变参数声明如下:

public void AddThemAll(params int[] numbers);

如果需要传入不同类型,可以使用object数组(所有类的基类):

public void AddThemAll(params object[] datas);

但如若和多个参数一起使用,与C++类似的,可变参数必须为最后一个参数:

public void AddThemAll(int n, params object[] datas);


按引用传递

按引用传递是C/C++语言中常用的特性,C#也支持,但编写和使用上有些许不同。C#中要将一个参数定为引用,则需要显式的添加关键字ref,并且调用时也需要添加。它的行为和C++的引用类似。

Public static void ChangeIt( ref uint a )
{
    a = 10;
}
//调用时则需要显示的写出ref关键字
uint number;
ChangeIt(ref number);


猜你喜欢

转载自blog.csdn.net/GarfieldGCat/article/details/80964520