浅谈.Net中容易混淆的委托和接口

  本文适合对委托和接口概念非常了解的朋友,并且欢迎各位朋友与Snake一起探讨有关这方面的知识.本文不适合对委托和接口概念或用途了解一知半解(模糊)的朋友,这篇文章可能会对您产生误导,请千万别看.

  在文章正式开始之前我需要将MSDN上对委托和接口的内容放上来,作为文章之基.

  委托:

  委托是一种定义方法签名的类型。当实例化委托时,您可以将其实例与任何具有兼容签名的方法相关联。您可以通过委托实例调用方法。

  委托用于将方法作为参数传递给其他方法。事件处理程序就是通过委托调用的方法。您可以创建一个自定义方法,当发生特定事件时某个类(例如 Windows 控件)就可以调用您的方法.

  委托具有以下特点:

  委托类似于 C++函数指针,但它们是类型安全的。

  委托允许将方法作为参数进行传递。

  委托可用于定义回调方法。

  委托可以链接在一起;例如,可以对一个事件调用多个方法。

  方法不必与委托签名完全匹配。有关更多信息,请参见在委托中使用变体(C#和 Visual Basic)。

  C# 2.0 版引入了匿名方法的概念,此类方法允许将代码块作为参数传递,以代替单独定义的方法。C# 3.0 引入了 Lambda 表达式,利用它们可以更简练地编写内联代码块。匿名方法和 Lambda 表达式(在某些上下文中)都可编译为委托类型。这些功能统称为匿名函数。有关 Lambda 表达式的更多信息,请参见Anonymous Functions (C# Programming Guide)。

  接口:

  接口描述的是可属于任何类或结构的一组相关功能。接口可由方法、属性、事件、索引器或这四种成员类型的任意组合构成。接口不能包含字段。接口成员一定是公共的。

  当类或结构继承接口时,意味着该类或结构为该接口定义的所有成员提供实现。接口本身不提供类或结构能够以继承基类功能的方式继承的任何功能。但是,如果基类实现接口,派生类将继承该实现。

  类和结构可以按照类继承基类或结构的类似方式继承接口,但有两个例外:

  类或结构可继承多个接口。

  类或结构继承接口时,仅继承方法名称和签名,因为接口本身不包含实现。

  接口具有下列属性:

  接口类似于抽象基类:继承接口的任何非抽象类型都必须实现接口的所有成员。

  不能直接实例化接口。

  接口可以包含事件、索引器、方法和属性。

  接口不包含方法的实现。

  类和结构可从多个接口继承。

  接口自身可从多个接口继承。

  正文开始

  在写这些文字的时候我又将以上的各个概念熟悉了一遍,以防自己把自己忽悠混淆了.所以不适合群众请尽快退散.另外如果您看完上面的定义和特征后就从两者的混淆中走了出来,您也可以尝试继续往下看.

  首先,关于委托的用法,我们可以这样使用:

public int Calculate(Func del){ int a = 1, b = 2; return del(a, b); }

NET技术浅谈.Net中容易混淆的委托和接口,转载需保留来源!

郑重声明:本文版权归原作者所有,转载文章仅为传播更多信息之目的,如作者信息标记有误,请第一时间联系我们修改或删除,多谢。