VB.net 2010 视频教程 VB.net 2010 视频教程 python基础视频教程
SQL Server 2008 视频教程 c#入门经典教程 Visual Basic从门到精通视频教程
当前位置:
首页 > 编程开发 > Objective-C编程 >
  • c#4.01之Dynamic 4

制作者:剑锋冷月 单位:无忧统计网,www.51stat.net
 

  这东西不是啥新鲜玩意,N 多语言支持,尤其是动态语言中应用最为灵活。不过我倒是很期待这玩意,每次写类库搞一大堆方法重载都很郁闷。

static void Test(string s, int x = 123, double y = 45.3d)
{
  Console.WriteLine("{0},{1},{2}", s, x, y);
}
static void Main(string[] args)
{
  Test("a");
  Test("a", y: 99d);
  Test("a", y: 99d, x: 88);
  Test(y: 99d, x: 88, s: "a");
}

  可选参数: 在方法声明中直接写入默认值,调用方法时可忽略。可选参数必须放在最后,否则将引发 "Optional parameters must appear after all required parameters" 编译错误。

  命名参数: 方法调用时可提供参数名称,如此便可自由安排参数顺序。

  看看反编译的结果。

private static void Test(string s, 
  [Optional, DefaultParameterValue(0x7b)] int x, 
  [Optional, DefaultParameterValue(45.3)] double y)
{
  Console.WriteLine("{0},{1},{2}", s, x, y);
}
private static void Main(string[] args)
{
  Test("a", 0x7b, 45.3);
  Test("a", 0x7b, 99.0);
  Test("a", 0x58, 99.0);
  Test("a", 0x58, 99.0);
}

  编译器为可选参数增加了 OptionalAttribute 和 DefaultParameterValueAttribute 特性,以便于引用编译和反射调用时能获取默认值。至于命名参数,无非是变相告知参数键值而已,最终编译结果还是按照原有的规则和顺序生成方法调用。

  语言的进化,是相互借鉴的结果…… 更多的是懒人的功劳…… [C# 4.0] 4. Optional Parameters


相关教程