C# 4.0 新特性:缺省参数
什么是缺省参数?
缺省参数(default parameter)是指在声明方法时,可以给方法的参数设置默认值,这样在调用方法时如果调用者没有为参数传入特定的值,就会使用参数的默认值。缺省参数使得编写方法时更加方便,简化了方法调用者的代码。
如何实现缺省参数?
在 C# 4.0 中,我们可以在声明方法时使用“=值”的方式来给方法的参数设置默认值,如下所示:
public void MyMethod(int para1, string para2 = "default", bool para3 = true)
{
// code implementation here
}
上面的 MyMethod
方法有三个参数,其中 para2
的默认值是 "default"
,para3
的默认值是 true
。在调用该方法时,可以按照普通方法的方式顺序传递参数,也可以使用缺省参数。
例如:
// 调用方式一:按照顺序传递参数
MyMethod(1, "hello", true);
// 调用方式二:使用缺省参数
MyMethod(1); // para2 使用 "default",para3 使用 true
MyMethod(1, "world"); // para2 使用 "world",para3 使用 true
MyMethod(1, para3: false); // para2 使用 "default",para3 使用 false
注意事项
- 缺省参数必须在参数列表的末尾,不能出现在中间或开头。
- 如果调用者传递的值为 null,则会使用默认值,而不是 null。如果需要避免这种行为,可以使用 nullable 值类型或重载方法。
就拿上面的示例来说,如果一个调用者传入 null 作为第二个参数,那么 para2
的值会是 "default",而不是 null。如果需要避免这种情况,可以将 para2
声明为 string?
,表示可以为空,或者重载一个方法不使用缺省参数。
示例
示例一
下面我们来举个实际的例子,假设我们有一个方法 GetStudentInfo
,它接受两个参数,一个是学生的姓名,另一个是学生的年龄。我们发现在调用 GetStudentInfo
的时候,经常会传入省略了学生年龄的参数。于是我们可以使用缺省参数来给年龄设置一个默认值,这个默认值可以是 18 岁。
public void GetStudentInfo(string name, int age = 18)
{
Console.WriteLine($"{name} 的年龄是 {age}");
}
GetStudentInfo("张三", 20); // 张三 的年龄是 20
GetStudentInfo("李四"); // 李四 的年龄是 18
示例二
再来一个示例,假设我们有个方法 SendEmail
,它需要传入五个参数,分别是邮件的标题、内容、发送者、接收者、抄送人。其中发送者、接收者、抄送人都是可选的,如果调用者没有传入这些参数,就使用默认值。
public void SendEmail(string subject, string body, string from = "noreply@example.com", string to = "admin@example.com", string cc = "")
{
Console.WriteLine($"标题:{subject},内容:{body},发送者:{from},接收者:{to},抄送人:{cc}");
}
SendEmail("新的功能上线啦", "请及时前往网站查看啊!"); // 发送者使用默认值,接收者使用默认值,抄送人使用空字符串
SendEmail("新的功能上线啦", "请及时前往网站查看啊!", "hello@example.com"); // 接收者使用默认值,抄送人使用空字符串
SendEmail("新的功能上线啦", "请及时前往网站查看啊!", "hello@example.com", "world@example.com"); // 抄送人使用空字符串
SendEmail("新的功能上线啦", "请及时前往网站查看啊!", "hello@example.com", "world@example.com", "foo@example.com"); // 所有参数都传入了特定的值
以上就是 C# 4.0 的缺省参数的详细介绍和几个示例,希望能够帮助到你。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:关于C# 4.0新特性“缺省参数”的实现详解 - Python技术站