A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 甘家利 中级黑马   /  2013-2-7 19:16  /  1127 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

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这种格式调用变量。
3C#中没有全局变量,但可以使用命名空间和静态变实现类似功能,下面的例子定义了一个用户类,初始化用户名后,在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:58

评分

参与人数 1技术分 +1 收起 理由
张文 + 1

查看全部评分

2 个回复

倒序浏览
值得学习ing!
回复 使用道具 举报
学习了~~~~~~~~
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马