日期:2010-03-03  浏览次数:20457 次

1.1 命名参数

命名参数的语法为:

参数名称1:参数值1,参数名称2:参数值2…

例如以下代码:

以下为引用的内容:

static void Main(string[] args)
{
CreateUser(password:"adminpassword",name:"admin");
}

static void CreateUser(string name, string password)
{
Console.WriteLine("name:{0},password:{1}", name, password);
}

可以看到由于在调用时使用了命名参数,参数的位置就不在重要了。

1.2. 可选参数

方法、构造函数、索引器和委托的定义可以指定其参数为必选的还是可选的,在调用时必须提供必选参数,但是可以省略可选参数。

还可以使用System.Runtime.InteropServices.OptionalAttribute特性类定义可选参数,该类从1.0时代就已经包含在基类库中了。

每一个可选参数的定义都包含默认值(默认值必须是常量),如果在调用时没有指定该参数,则使用默认值。例如以下代码:

以下为引用的内容:

static void Main(string[] args)
{
CreateUser("admin","adminpassword",50);
}

 

///


/// 创建用户
///
/// 用户名称
/// 用户密码
/// 积分
/// 是否锁定
static void CreateUser(string name, string password,
int score=20,bool isLocked=false)
{
Console.WriteLine("name:{0},password:{1}", name, password);
}

在所有必须参数后面定义可选参数,如果在调用时提供了某个可选参数的值,那么必须提供该可选参数之前所有可选参数的值(如果此参数之前有可选参数),而不允许使用逗号分隔的形式提供参数,即以下调用是错误的:

CreateUser(“admin”,“adminpassword”,,true);

而必须写成:

CreateUser(“admin”,“adminpassword”,20,true);、

或者更好的解决办法是使用命名参数:

CreateUser(“admin”,“adminpassword”,isLocked:true);

1.3. COM API访问

命名和可选参数与dynamic和其他增强一起使得访问COM API更加方便。例如在C#3.0或更早的版本中在调用某些COM API时,如果要省略某些参数需要使用Type.Missing,例如以下代码(代码系摘抄):

以下为引用的内容:

var excelApp = new Microsoft.Office.Interop.Excel.Application();
var myFormat =
Microsoft.Office.Interop.Excel.XlRangeAutoFormat.xlRangeAutoFormatAccounting1;

 

excelApp.get_Range("A1", "B4").AutoFormat(myFormat, Type.Missing,
Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing);

但是有了命名和可选参数后,可以很简单的写成这样:

友情链接: 爱易网 云虚拟主机技术 云服务器技术 程序设计技术 开发网站 APP开发教程
Copyright © 2013-2024 爱易网页 当前在线:1276人  网站在19时39分34秒内访问总人数:215589人 当前 39.85%  粤ICP备18100884号-2