C#4.0初探:Optional and named parameters

Optional and named parameters特性在有些场合提供很大的方便,特别是Office开发中可以告别一坨System.Reflection.Missing了。这里简单了解一下C#4.0中的Optional and named parameters。

在VS2010 CTP中的C#4.0编译器调试通过,正式版可能会有些变化。

1.使用示例

class Program
{
    static void Main(string[] args)
    {
        Test t = new Test();
        t.OptionalAndNamedParams(1);
        t.OptionalAndNamedParams(2, "a");
        t.OptionalAndNamedParams(3, c: "b", b: "a");
        t.OptionalAndNamedParams(4, c: "http://g.cn");
    }
}

class Test
{
    // a为必选参数;b,c为可选参数
    public void OptionalAndNamedParams(int a, string b = "", object c = "http://xianfen.net")
    {
        Console.WriteLine("a:{0}, b:{1}, c:{2}", a, b, c);
    }
}

运行结果为:

使用中的注意事项:

当必选参数与可选参数在同一个方法中混合使用时,必选参数的声明应该放在可选参数的前面。

可选参数的初始值必须是一个在编译期可确定的常量。

可选参数不可用ref,out等修饰符。

如果全部显式指定参数名(paraName:value),参数的顺序可以任意调整。

时间: 2024-10-02 02:52:43

C#4.0初探:Optional and named parameters的相关文章

C# 4.0 Optional Parameters 和Named Parameters

Optional Parameters 是C# 4.0的特色之一,可减少重载函数的数量,却可达到相同的效果,加快开发效率.在使用上就跟C++一样,只需用等号为函数的参数加上默认值即可.需注意的是Optional Parameters要放在必要性参数的后面,也就是说Optional Parameters后面不得有必要性参数的存在. Optional Parameters 虽然不是新的概念,但对于缺少该功能的C#而言,习惯C++的程序员来说,写起来总是会觉得不顺,在函数重载的编写上也麻烦了许多.好在

XRegExp 0.2: Now With Named Capture_js面向对象

Update: A beta version of XRegExp 0.3 is now available as part of the RegexPal download package. JavaScript's regular expression flavor doesn't support named capture. Well, says who? XRegExp 0.2 brings named capture support, along with several other

Swift 2.0初探: 值得注意的新特性

转眼间,Swift已经一岁多了,这门新鲜.语法时尚.类型安全.执行速度更快的语言已经渐渐的深入广大开发者的心.我同样也是非常喜爱这门新的编程语言. 今年6月,一年一度的WWDC大会如期而至,在大会上Apple发布了Swift 2.0,引入了很多新的特性,以帮助开发者能更快,更简单的构建应用.我在这里也说道说道Swift 2.0中值得大家注意的新特性. guard语句 guard语句和if语句有点类似,都是根据其关键字之后的表达式的布尔值决定下一步执行什么.但与if语句不同的是,guard语句只会

Samba 2.2.0初探(2)

编辑smbpasswd文件从中删除不必要的账号以防止安全隐患,然后用以下命令添加新samba用户: bsd# /usr/local/samba/bin/smbpasswd -a sambauser 好,我们现在就可以用这份缺省的配置文件进行试运行: bsd# /usr/local/samba/bin/smbd -D ; /usr/local/samba/bin/nmbd -D 这时请查看/usr/local/samba/var/log.smbd文件有没有出错信息,运气好的话开始测试连接: bsd

C#4.0初探:dynamic 关键字

C#新增了dynamic关键字,正因为这一个小小的关键字,C#动态特性向前迈进了一大步.dynamic是一个类型关键字,声明为dynamic的类型与"静态类型"(这里的静态类型是指编译时确定的类型,下同)相比最大的特点它是"动态类型",它会运行时尝试调用方法,这些方法的存在与否不是在编译时检查的,而是在运行时查找,如果方法存在并且参数正确,会正常调用,否则会抛出Microsoft.CSharp.RuntimeBinder.RuntimeBinderException

艾伟:C#4.0初探:dynamic 关键字

C#新增了dynamic关键字,正因为这一个小小的关键字,C#动态特性向前迈进了一大步.dynamic是一个类型关键字,声明为dynamic的类型与"静态类型"(这里的静态类型是指编译时确定的类型,下同)相比最大的特点它是"动态类型",它会运行时尝试调用方法,这些方法的存在与否不是在编译时检查的,而是在运行时查找,如果方法存在并且参数正确,会正常调用,否则会抛出Microsoft.CSharp.RuntimeBinder.RuntimeBinderException

C# 4.0初探

C#新增了dynamic关键字,正因为这一个小小的关键字,C#动态特性向前迈进 了一大步. dynamic是一个类型关键字,声明为dynamic的类型与" 静态类型"(这里的静态类型是指编译时确定的类型,下同)相比最大的特 点它是"动态类型",它会运行时尝试调用方法,这些方法的存在与否 不是在编译时检查的,而是在运行时查找,如果方法存在并且参数正确,会正常 调用,否则会抛出Microsoft.CSharp.RuntimeBinder.RuntimeBinderExc

百度map 3.0初探

1.简介     在使用百度地图SDK为您提供的各种LBS能力之前,您需要获取百度地图移动版的开发密钥,该密钥与您的百度账户相关联.因此,您必须先有百度帐户,才能获得开发密钥.并且,该密钥与您创建的过程名称有关,具体流程请参考如下介绍.     Key的申请地址为:http://lbsyun.baidu.com/apiconsole/key     注意:     1. 为了给用户提供更安全的服务,Android SDK自v2.1.3版本开始采用了全新的Key验证体系.因此,当您选择使用v2.1

艾伟:C# 4.0下的新特性

回顾C#发展的历史,C#1.0完全是模仿Java,并保留了C/C++的一些特性如struct,新学者很容易上手:C#2.0加入了泛型,也与Java1.5的泛型如出一辙:C#3.0加入了一堆语法糖,并在没有修改CLR的情况下引入了Linq,简直是神来之笔,虽然很多项目出于各种各样如性能之类的原因没有采用,但非常适合小型程序的快速开发,减轻了程序员的工作量,也提高了代码的可读性:C#4.0增加了动态语言的特性,从里面可以看到很多javascript.python这些动态语言的影子.虽然越来越偏离静态