C#中代理和var的用法

来源:互联网 发布:windows的快捷方式 编辑:程序博客网 时间:2024/06/03 18:22

http://www.rainsts.net/article.asp?id=111

C# 2.0 允许我们在进行委托实例化时,省略掉委托类型,而直接采用方法名,C#编译器会做合理的推断。

  public delegate void TestHandler(int x);

  public class Program
  {
    static void Test(int i)
    {
    }

    static void Execute(TestHandler test, int i)
    {
    }

    static void Main(string[] args)
    {
      // C# 1.x 代码
      TestHandler t1 = new TestHandler(Test);
      Execute(new TestHandler(Test), 10);

      // C# 2.0 代码
      TestHandler t2 = Test; // 注意Test不包含括号,否则就成方法调用了。
      Execute(Test, 20);
    }
  }

看看反编译后的Main方法中 2.0 的代码样子。

private static void Main(string[] args)
{
  TestHandler handler1 = new TestHandler(Program.Test);
  Program.Execute(new TestHandler(Program.Test), 20);
}

 

 

 

 

 

var dict = new Dictionary<string, int> { { "a", 1 }, { "b", 2 } };

foreach (var key in dict.Keys)
{
  Console.WriteLine("{0}={1}", key, dict[key]);
}

或许下面这样更 "好看" 一些。

foreach (var item in dict)
{
  Console.WriteLine("{0}={1}", item.Key, item.Value);
}

原创粉丝点击