【C#基础概念】函数参数默认值和指定传参和方法参数

2023-04-27,,

函数参数默认值和指定传参

最近在编写代码时发现介绍C#参数默认值不能像PL/SQL那样直接设置default,网上也没有太多详细的资料,自己琢磨并试验后整理成果如下:

C#允许在函数声明部分定义默认值

参数默认值设定后,调用时可以不用填写有默认值的参数

参数传递顺序,顺序调用在前,指定参数调用在后

1.默认参数设置

一般函数声明

public void FuncPara(string a,string b)

设置默认值

public void FuncPara(string a="specify by default a",string b= "specify by default b")

public void FuncPara(string a="specify by default",string b= "specify by default")
{
MessageBox.Show(a +"\n"+ b+"\n");
}
private void button1_Click(object sender, EventArgs e)
{
FuncPara();
}

此时调用函数将采用默认值

messagebox出来的是:

specify by default a

specify by default b

在调用时重写默认参数

public void FuncPara(string a = "specify by default a", string b = "specify by default b")
{
MessageBox.Show(a + "\n" + b + "\n");
}
private void button1_Click(object sender, EventArgs e)
{
FuncPara( b: "specify by call");
}

此时调用函数a将采用默认值,b的值在调用时被重写了

messagebox出来的是:

specify by default a

specify by call

3.参数传递时的顺序

原则先传顺序参数值,后传指定参数,没有指定参数的传值全部是按照顺序传递的
3.1顺序调用

这是最基本的参数调用方式,根据参数顺序传参,顺序参数在编写和调用时应当放在前面

编写函数首部时,有默认值参数一旦出现,后面的参数应当全部为有默认值的参数否则编译器会报错

public void FuncPara(string c,string a="specify by default",string b= "specify by default")

调用时

FuncPara("c","a","b");
依次向参数c,a,b传值

错误写法

public void FuncPara(string a="specify by default",string c,string b= "specify by default")

3.2指定参数调用

你可以不按照顺序指定调用时的参数传值

public void FuncPara(string a="specify by default",string b= "specify by default")

只指定b,a采用默认值

FuncPara( b: "specify by call");

messagebox出来的是:

specify by default a

specify by call

也可以不按顺序:

FuncPara( b: "specify by call",a:"sdfe");

方法参数

为不具有 in、ref 或 out 的方法声明的参数会按值传递给调用的方法。 可以在方法中更改该值,但当控制传递回调用过程时,不会保留更改后的值。 可以通过使用方法参数关键字更改此行为。

本部分介绍声明方法参数时可以使用的关键字:

params 指定此参数采用可变数量的参数。

in 指定此参数由引用传递,但只由调用方法读取。

ref 指定此参数由引用传递,可能由调用方法读取或写入。

out 指定此参数由引用传递,由调用方法写入。

params(C# 参考)

使用 params 关键字可以指定采用数目可变的参数的方法参数。 参数类型必须是一维数组。

在方法声明中的 params 关键字之后不允许有任何其他参数,并且在方法声明中只允许有一个 params 关键字。

如果 params 参数的声明类型不是一维数组,则会发生编译器错误 CS0225。

使用 params 参数调用方法时,可以传入:

数组元素类型的参数的逗号分隔列表。
指定类型的参数的数组。
无参数。 如果未发送任何参数,则 params 列表的长度为零。

in 参数修饰符(C# 参考)

in 关键字会导致按引用传递参数,但确保未修改参数。 它让形参成为实参的别名,这必须是变量。 换而言之,对形参执行的任何操作都是对实参执行的。 它类似于 ref 或 out 关键字,不同之处在于 in 参数无法通过调用的方法进行修改。 out 参数必须由调用的方法进行修改,这些修改在调用上下文中是可观察的,而 ref 参数是可以修改的。   在调用函数的时候in是可选的。用in声明参数的函数可以重载。更多用法请看

static void Method(in int argument)
{
// implementation removed
} Method(5); // OK, temporary variable created.
Method(5L); // CS1503: no implicit conversion from long to int
short s = 0;
Method(s); // OK, temporary int created with the value 0
Method(in s); // CS1503: cannot convert from in short to in int
int i = 42;
Method(i); // passed by readonly reference
Method(in i); // passed by readonly reference, explicitly using `in`

【C#基础概念】函数参数默认值和指定传参和方法参数的相关教程结束。

《【C#基础概念】函数参数默认值和指定传参和方法参数.doc》

下载本文的Word格式文档,以方便收藏与打印。