C#中代理和var的用法
2008-09-13 06:33
260 查看
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);
}
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);
}
相关文章推荐
- C#中var关键字用法(收藏)
- C#中var的用法
- c#中var关键字用法浅谈
- C#中的var用法以及和JavaScript中的var的区别
- C#基础——var关键字用法
- C# 代理用法
- C#中var关键字用法
- C# var 隐式类型 var 用法 特点
- c# var的含义与用法
- C# var和dynamic的用法和理解
- C#中var关键字用法
- C# var关键字用法
- C# var 隐式类型 var 用法 特点
- C#中var用法详解
- C#中var关键字用法分析
- 转:C# lock用法
- C# FileStream和StreamWriter用法
- C#中HashTable的用法
- C#设计模式之代理模式(四)
- C#中修饰符用法“virtual(虚拟函数)、override(函数复写)、static(静态函数)、abstract(抽象函数)、sealed(密封函数)”