.NET平台的核心包括两方面,一方面就是著名的通用语言运行机(Common Language Runtime),虽然这个名词起得晦涩了点,不过大家可以拿它和Java的虚拟机来作比较,二者完成的任务大致相同;另一方面就是一大堆通用函数库,这些库函数可以被多种语言调用,并且通过编译都产生一种共同的中间语言(Intermediate Language),这种语言也可以拿Java的字节码来类比,虽然完成的方式有些不一样。
public class Skyscraper { Story[] stories; public Story this [int index] { get { return stories [index]; } set { if (value != null) { stories [index] = value; } } } ... }
Skyscraper empireState = new Skyscraper (...); empireState [102] = new Story ("The Top One", ...);
//首先是指代的声明,它定义了唤醒某个函数的事件信号 public delegate void ScoreChangeEventHandler (int newScore, ref bool cancel);
//定义一个产生事件的类 public class Game { // 注意这里使用了event关键字 public event ScoreChangeEventHandler ScoreChange; int score; // Score 属性 public int Score { get { return score; } set { if (score != value) { bool cancel = false; ScoreChange (value, ref cancel); if (! cancel) score = value; } } }
// 处理事件的类 public class Referee { public Referee (Game game) { // 裁判负责调整比赛中的分数变化 game.ScoreChange += new ScoreChangeEventHandler (game_ScoreChange); }
// 注意这里的函数是怎样和ScoreChangeEventHandler的信号对上号的 private void game_ScoreChange (int newScore, ref bool cancel) { if (newScore < 100) System.Console.WriteLine ("Good Score"); else { cancel = true; System.Console.WriteLine ("No Score can be that high!"); } } }
// 主函数类,用于测试上述特性 public class GameTest { public static void Main () { Game game = new Game (); Referee referee = new Referee (game); game.Score = 70; game.Score = 110; } }