您的位置:时时app平台注册网站 > 编程知识 > C# 4.0四大新风味代码示例与解读【时时app平台注

C# 4.0四大新风味代码示例与解读【时时app平台注

2019-10-30 04:16

  或然你会想到,即使本人有贰个和可选参数方法某些参数相符的法门签名的章程时,C#会怎么处理吧,大家看下下边包车型大巴代码

11年 C# 4.0四大新特色代码示例与解读,

摘要:明天大家构成代码实例来具体看一下C#4.0中的多个相当重大的特色。

  以前的稿子中,大家曾介绍过C#的历史及C# 4.0新扩展脾气,包罗:dynamic、 命名和可选参数、动态导入以致协变和逆变等。明天大家构成代码实例来具体看一下C#4.0中的四个相当重大的风味。

  1.dynamic ExpandoObject

  熟谙js的爱人都领悟js可以如此写 :

var t = new Object(); t.Abc = ‘something’; t.Value =243;

  现在以此js动态语言的风味,大家也可以在c#中选拔了,前提是将三个变量评释为ExpandoObject类型。如下例:

    static void Main(string[] args)
  {         dynamic t = new ExpandoObject();         t.Abc ="abc";         t.Value =10000;
        Console.WriteLine("t's abc = {0},t's value = {1}", t.Abc, t.Value);         Console.ReadLine();

  }

  C# 4.0中新扩张了贰个命名空间System.Dynamic来贯彻对此选取的支撑,这种用法的意义何在,以往自己还不太通晓,也是C#向动态语言过渡的少年老成种试探吧。

  2.泛型自动调换

  在C# 4.0早先下边包车型地铁代码是不得以编写翻译通过的

   IEnumerable<object> objs = new List<string> { "I'm 0","I'am 1","I'am 2" };

  在C# 4.0中这种注脚是同意的,不过也只限于泛型接口,泛型类型的相同做法是不容许的,如下代码是有编译错误的

   List<object> objList = new List<string> { "I'am 0","I'am 1","I'am 2" };

  3.方法参数之可选参数

  如下方法证明的语法

   static void DoSomething(int notOptionalArg, string arg1 ="default Arg1", string arg2 ="default arg2")
  {
      Console.WriteLine("arg1 = {0},arg2 = {1}",arg1,arg2);
  }

  那个办法有多少个参数第贰个是必选参数,第1个和第多少个是可选参数,他们都有三个暗许值。

  这种情势对定点参数的多少个点子重载很有用。如下调用:

   static void Main(string[] args)
  {
        DoSomething(1);
        DoSomething(1, "葫芦");
        DoSomething(1, "葫芦", "黄瓜");
        Console.ReadLine();
  }

  大概你会想到,假使自个儿有一个和可选参数方法某些参数相近的方式签字的方式时,C#会怎么管理呢,我们看下上边包车型地铁代码

   static void DoSomething(int notOpArg, string arg)
  {
        Console.WriteLine("arg1 = {0}", arg);
    }

  这里又重载了贰个DoSomething那么些主意有几个参数,但是从未可选参数,

  实验表明调用DoSomething(1,”arg”)时会优先实践没有可选参数的法子。

  4.方法参数之命名参数

  命名参数让大家能够在调用方法时钦命参数名字来给参数赋值,这种情状下能够忽视参数的顺序。如下方法注解:

   static void DoSomething(int height, int width, string openerName, string scroll)
  {
        Console.WriteLine("height = {0},width = {1},openerName = {2}, scroll = {3}",height,width,openerName,scroll);
  }

  我们得以这么来调用上边评释的办法

   static void Main(string[] args)
  {
      DoSomething( scroll : "no",height : 10, width : 5, openerName : "windowname");
      Console.ReadLine();
  }

  很分明的那是贰个语法糖,可是在艺术参数超级多的场馆下很有含义,能够追加代码的可读性。

C# 4.0第四次全国代表大会新特色代码示例与解读, 摘要:明天大家结合代码实例来具体看一下C#4.0中的四个相比较关键的表征。 此前的篇章中,我们曾介...

   IEnumerable<object> objs = new List<string> { "I'm 0","I'am 1","I'am 2" };

  4.艺术参数之命名参数

  命名参数让大家可以在调用方法时内定参数名字来给参数赋值,这种场所下得以忽视参数的各类。如下方法表明:

  3.方法参数之可选参数

        Console.ReadLine();

   List<object> objList = new List<string> { "I'am 0","I'am 1","I'am 2" };

   static void DoSomething(int height, int width, string openerName, string scroll)
  {
        Console.WriteLine("height = {0},width = {1},openerName = {2}, scroll = {3}",height,width,openerName,scroll);
  }

  现在这些js动态语言的性状,大家也得以在c#中接收了,前提是将叁个变量证明为ExpandoObject类型。如下例:

        dynamic t = new ExpandoObject();

    static void Main(string[] args)
  {

  这些主意有四个参数第三个是必选参数,第二个和第多个是可选参数,他们都有贰个暗许值。

   static void Main(string[] args)
  {
        DoSomething(1);
        DoSomething(1, "葫芦");
        DoSomething(1, "葫芦", "黄瓜");
        Console.ReadLine();
  }

   static void DoSomething(int notOptionalArg, string arg1 ="default Arg1", string arg2 ="default arg2")
  {
      Console.WriteLine("arg1 = {0},arg2 = {1}",arg1,arg2);
  }

  在C# 4.0中这种证明是允许的,不过也只限于泛型接口,泛型类型的好像做法是不容许的,如下代码是有编写翻译错误的

  C# 4.0中新扩充了三个命名空间System.Dynamic来实现对此接收的支撑,这种用法的含义何在,现在本身还不太精通,也是C#向动态语言过渡的意气风发种试探吧。

        t.Abc ="abc";

摘要:前不久我们构成代码实例来具体看一下C#4.0中的八个相当的重大的风味。

  熟练js的爱人都精通js能够这么写 :

  }

var t = new Object(); t.Abc = ‘something’; t.Value =243;

  在C# 4.0在此以前上边包车型大巴代码是不可能编写翻译通过的

   static void DoSomething(int notOpArg, string arg)
  {
        Console.WriteLine("arg1 = {0}", arg);
    }

  这里又重载了二个DoSomething那么些形式有八个参数,不过未有可选参数,

  实验求证调用DoSomething(1,”arg”)时会优先试行未有可选参数的主意。

  此前的稿子中,大家曾介绍过C#的历史及C# 4.0新添天性,富含:dynamic、 命名和可选参数、动态导入以至协变和逆变等。前些天大家构成代码实例来具体看一下C#4.0中的七个比较重大的性状。

   static void Main(string[] args)
  {
      DoSomething( scroll : "no",height : 10, width : 5, openerName : "windowname");
      Console.ReadLine();
  }

  很明朗的那是贰个语法糖,但是在议程参数非常多的事态下很有意义,能够扩张代码的可读性。

  咱俩可以这么来调用上边表明的诀窍

  这种情势对定点参数的多少个章程重载很有用。如下调用:

  如下方法评释的语法

  1.dynamic ExpandoObject

  2.泛型自动调换

        t.Value =10000;
        Console.WriteLine("t's abc = {0},t's value = {1}", t.Abc, t.Value);

本文由时时app平台注册网站发布于编程知识,转载请注明出处:C# 4.0四大新风味代码示例与解读【时时app平台注

关键词: