黑马程序员技术交流社区
标题: C#委托 [打印本页]
作者: 甘家利 时间: 2013-2-7 19:16
标题: C#委托
1) 委托:
委托实现一般分三步骤:
1、 声明委托
声明一个新的委托类型。每个委托类型都描述参数的数目和类型,以及它可以封装的方法的返回值类型。每当需要一组新的参数类型或新的返回值类型时,都必须声明一个新的委托类型。
例如:
Public delegate void ProcessBookDelegate(Book book);
2、 实例化委托。
声明了委托类型后,必须创建委托对象并使之与特定方法关联。在上面的示例中,这是通过将 PrintTitle 方法传递给 ProcessPaperbackBooks 方法来完成的,如下所示:
static void PrintTitle(Book b)
{ System.Console.WriteLine(" {0}", b.Title); }
bookDB.ProcessPaperbackBooks(PrintTitle);
这将创建与静态方法 Test.PrintTitle 关联的新委托对象。类似地,对象 totaller 的非静态方法 AddBookToTotal 是按如下方式传递的:
internal void AddBookToTotal(Book book)
{ countBooks += 1;
priceBooks += book.Price; }
bookDB.ProcessPaperbackBooks(totaller.AddBookToTotal);
在两个示例中,都向 ProcessPaperbackBooks 方法传递了一个新的委托对象。委托一旦创建,它的关联方法就不能更改;委托对象是不可变的。
3、 调用委托。
创建委托对象后,通常将委托对象传递给将调用该委托的其他代码。通过委托对象的名称(后面跟着要传递给委托的参数,括在括号内)调用委托对象。下面是委托调用的示例:
processBook(b);
与本例一样,可以通过使用 BeginInvoke 和 EndInvoke 方法同步或异步调用委托。
) 全局变量
在很多时候,会有一些变量会在几个窗口之间传递,而这需要用到全局变量。而在C#里,没有定义全局变量的关键字,所以可以可以用下来方法来实现全局变量。
1、用静态成员来作全程变量
2、建立一个类,然后在该类中添加一个静态的成员变量,或者加一个常量也可以,然后用的时候直接对该类进行访问即可。
class Static
{
public static SerialPort ComPort;
public static ushort usInstrumentID=0;
public static Timer tmrCommunicate;
public static Boolean IsComing=false ;
public static int TimeOutCount=0;
}
在窗口实例类中,可以用Static.TimeOutCount这种格式调用变量。
3、C#中没有全局变量,但可以使用命名空间和静态变实现类似功能,下面的例子定义了一个用户类,初始化用户名后,在filetobase命名空间的其它类都可以获得用户名
namespace FileToBase{
public class user
{ private static string userName;
public user(string name)
{ userName=name;
}
public static string UserName
{
get
{
return userName;
}
}
}
作者: 许庭洲 时间: 2013-2-17 14:01
值得学习ing!
作者: 朱京辉 时间: 2013-2-17 14:58
学习了~~~~~~~~
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) |
黑马程序员IT技术论坛 X3.2 |