C#2.0新特性:泛型(Generics)、匿名方法(Anonymous Methods)、迭代器(Iterators)和不完全类型(Partial Types)
来源:互联网 发布:家用网络电话机 编辑:程序博客网 时间:2024/04/27 11:29
1:泛型
不多说了,个人理解泛型就是泛参数化,即用T表示所有的类型。
public class WSView<T>{
public virtual DataTable searchView(T sp)
{。。。。。。}
}
[WebMethod] public ViewEntity[] ViewSummary(SumParameters sp) { WSView<SumParameters> view = new WSView<SumParameters>(); DataTable dt = view.searchView(sp); return view.Convert2Entity(dt); } [WebMethod] public ViewEntity[] ViewDetail(DetParameters dp) { WSView<DetParameters> view = new WSView<DetParameters>(); DataTable dt = view.searchView(dp); return view.Convert2Entity(dt); }
2:匿名方法
没有匿名方法的时候(C# 1.0)
addButton.Click += new EventHandler(AddClick);
void AddClick(object sender,EventArgs e){ listBox.Items.Add(textBox.Text);}
有了匿名方法之后(C# 2.0)
addButton.Click += delegate{ listBox.Items.Add(textBox.Text);}
匿名方法的机制
C# 2.0中的匿名方法仅仅是通过编译器的一层额外处理,来简化委托实例化的工作。它与C# 1.0的代码不存在根本性的差别。
通过ILDasm.exe反汇编工作,我们可以获得对匿名方法的深入了解: - 静态方法中的匿名方法 - 实例方法中的匿名方法 - 匿名方法中的外部变量
静态方法中的匿名方法
public delegate void D(); static void F() { D d = delegate{Console.WriteLine("text");}; }
上面的代码被编译器转换为:
static void F() { D d = new D(Method1); } static void _Method1() { Console.WriteLine("test"); }
实例方法中的匿名方法
class Test { int x; void F() { D d = delegate{Console.WriteLine(this.x);}; } }
上面的代码被编译器转换为:
void F() { D d = new D(Method1); } void _Method1() { Console.WriteLine(this.x); }
匿名方法的外部变量
void F() { int y = 123; D d = delegate{Console.WriteLine(y);}; }
上面的代码被编译器转换为:
class _Temp { public int y; public void _Method1() { Console.WriteLine(y); } } void F() { _Temp t = new _Temp(); t.y = 123; D d = new D(t._Method1); }
3:迭代器
一个简单的例子:class MyStack:IEnumerable { int[] items = { 1, 2, 3, 4, 5, 6, 7, 8 }; public IEnumerator GetEnumerator() { for (int i = 0; i < items.Length; i++) { yield return items[i]; } } }使用:MyStack stack = new MyStack(); foreach (int i in stack) { listBox1.Items.Add(i); }
4:不完全类型
- C#2.0新特性:泛型(Generics)、匿名方法(Anonymous Methods)、迭代器(Iterators)和不完全类型(Partial Types)
- c#2.0新特性:(二)匿名方法(Anonymous Methods)
- 不完全类型(Partial Types)
- 匿名方法(Anonymous Methods)
- .Net 2.0 新功能:匿名方法(Anonymous Methods)
- c#2.0新特性:(三)迭代器(Iterators)
- c#2.0新特性:(一)泛型(Generics)
- 匿名方法(Anonymous Methods)之Microsoft Corporation 解释
- C#3.0 匿名类型(Anonymous Types)
- 匿名类型(Anonymous Types)
- C#梳理【匿名方法Anonymous methods】
- C#3.5语言新特性(三)-匿名类型
- C# 3.0 新特性 学习(二):匿名类型、扩展方法
- C# 3.0新特性之QuerySyntax(查询语法)和AnonymousTypes(匿名类型)
- C#3.0新特性(三)-详说自动属性和匿名类型
- C#3.0新特性(三)- 详说自动属性和匿名类型
- 不完全类型(Partial Type)之MSDN解释
- VS2008&C#3.5语言特色系列[视频]:部分方法(Partial Methods)
- 一个80后程序员的奋斗(转)
- 开源协议
- 不能正常打开JSP文件!
- maven2 eclipse 插件wizard 无法使用问题及解决
- tomcat webdav 中文问题解决方案
- C#2.0新特性:泛型(Generics)、匿名方法(Anonymous Methods)、迭代器(Iterators)和不完全类型(Partial Types)
- 我们自杀吧---漫画连载
- 在firefox中点击rtsp链接自动调用暴风影音播放
- Windows文件隐藏
- C#代码与javaScript函数的相互调用
- 小日本研究出智能机器人
- 如何将曲线以不连续的形式画出来
- 处于胚胎阶段的开源软件
- ArrayList总结