关于C# 4.0新特性“缺省参数”的实现详解

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技术站

(0)
上一篇 2023年5月14日
下一篇 2023年5月14日

相关文章

  • C#读写config配置文件的方法

    以下是关于C#读写config配置文件的完整攻略。 1. 创建配置文件 首先,我们需要创建一个配置文件,可以使用Visual Studio自带的配置管理器创建,也可以手动创建一个XML文件并修改后缀为.config。下面是一个简单的配置文件示例: <?xml version="1.0" encoding="utf-8&qu…

    C# 2023年6月1日
    00
  • CMD下读取/修改/删除注册表项的方法

    在CMD下读取、修改、删除注册表项可以使用reg命令来完成,reg命令是Windows系统自带的命令。 1. 读取注册表项 要读取一个注册表项,使用reg query命令。下面是reg query命令的语法: reg query "<注册表项路径>" 例如,要读取计算机的Windows版本,可以运行以下命令: reg quer…

    C# 2023年6月6日
    00
  • c# 开发语音识别程序

    C#开发语音识别程序 概述 语音识别是当前比较热门的领域之一,它可以应用在语音助手、音频转写等领域。本文主要介绍如何使用C#开发语音识别程序。 准备工作 在使用C#开发语音识别程序之前,我们需要安装语音识别的开发库。我们可以使用Microsoft Speech Platform SDK 11来实现对语音的识别,这个库在Windows 7以及之后的版本中默认已…

    C# 2023年6月6日
    00
  • C#如何将DataTable导出到Excel解决方案

    下面是“C#如何将DataTable导出到Excel解决方案”的完整攻略。 1. 使用官方Office Interop库 首先,我们可以使用官方的Office Interop库来实现将DataTable导出到Excel。以下示例代码演示了如何使用Office Interop库。 using Microsoft.Office.Interop.Excel; //…

    C# 2023年5月31日
    00
  • C#中委托(Delegates)的使用方法详解

    下面是针对“C#中委托(Delegates)的使用方法详解”这个话题的完整攻略: 委托的概念 委托(Delegates)是C#中的一个重要的概念,它允许我们将一个方法作为参数,传递给另一个方法。委托在事件处理和回调函数中十分常见。 在C#中,我们可以通过定义一个委托类型(Delegate),来定义一个委托。委托类型需要指定方法的参数列表和返回值类型。而委托实…

    C# 2023年5月15日
    00
  • C#使用round函数四舍五入的方法

    使用round()函数可以轻松实现C#四舍五入的功能。下面是使用round()函数四舍五入的方法的完整攻略: 1. round()函数用法 在C#中,round()函数是一个标准库函数,用于对数值进行四舍五入。该函数的语法如下: Math.Round(double value, int digits, MidpointRounding mode); 其中,v…

    C# 2023年6月8日
    00
  • C#中类的使用教程详解

    C#中类的使用教程详解 什么是类 在C#中,类是一种自定义类型,它允许我们定义自己的数据类型以及与它相关的方法和事件。类包含了多个成员,包括属性、方法、字段、构造函数和事件等。使用类,我们可以把数据和相应的方法封装在一起,便于代码的管理和维护。 声明和定义类 定义一个类的语法格式如下: [修饰符] class 类名 { //类成员 } 其中,修饰符是可选部分…

    C# 2023年6月1日
    00
  • C# Stream.Read – 从流中读取数据

    C#的Stream.Read方法作用是从当前流中读取指定数量的字节并将其存储到缓冲区中。 该方法的使用方法如下: public virtual int Read( byte[] buffer, int offset, int count ) 参数说明: buffer:字节型数组,是用来缓存读出的数据的。 offset:整数类型,是buffer参数中的偏移量,…

    C# 2023年4月19日
    00
合作推广
合作推广
分享本页
返回顶部