1. 委托
可以参考 VS2010 自带例子
对委托的操作(+,-), 多播委托:
匿名委托:
2. 事件
1. 定义一个字符串列表类(继承自List<string>) 2. 定义委托 3. 根据委托定义事件 4. 定义激发事件的方法 5. 定义事件处理函数 6. 订阅
namespace MyEvent { class Program { class StringList:List<string> { public delegate void dele(); public event dele Changed; // 事件定义(用委托) public new void Add(string item) // 用new隐藏基类中的方法 { base.Add(item); // 调用基类中的方法 Changed(); // 事件激发 } } /// <summary> /// 事件处理函数 /// </summary> static void ListChanged() { Console.WriteLine("ListChanged_Add"); } static void Main(string[] args) { StringList names = new StringList(); names.Changed += ListChanged; // 事件订阅 names.Add("Tom"); names.Add("JIm"); names.Add("Lily"); } } }
3. 结构——C语言的馈赠
- 结构体中可以声明的内容:字段,属性,方法。
- 结构是值类型,而类是引用类型。
4. 密封类、分部类
- 密封类(sealed class):不能被继承的类
- 分部类(partial class):将一个较长的类放在不同文件中
5. 枚举类型
声明方式:
enum Days { Sunday, Monday, Tuesday, Wednesday, Thursday, Friday, Saturday };
enum Months : byte { Jan, Feb, Mar, Apr, May, Jun, Jul, Aug, Sep, Oct, Nov, Dec };
默认情况下,枚举中每个元素的基础类型是 int。 可以使用冒号指定另一种整数值类型,如前面的示例所示。
枚举类型作为位标志
[Flags] enum Days2 { None = 0x0, Sunday = 0x1, Monday = 0x2, Tuesday = 0x4, Wednesday = 0x8, Thursday = 0x10, Friday = 0x20, Saturday = 0x40 } class MyClass { Days2 meetingDays = Days2.Tuesday | Days2.Thursday; }
这样就可以使用:OR(|),XOR(^),AND(&)操作符
// Initialize with two flags using bitwise OR. meetingDays = Days2.Tuesday | Days2.Thursday; // Set an additional flag using bitwise OR. meetingDays = meetingDays | Days2.Friday; Console.WriteLine("Meeting days are {0}", meetingDays); // Output: Meeting days are Tuesday, Thursday, Friday // Remove a flag using bitwise XOR. meetingDays = meetingDays ^ Days2.Tuesday; Console.WriteLine("Meeting days are {0}", meetingDays); // Output: Meeting days are Thursday, Friday // Test value of flags using bitwise AND. bool test = (meetingDays & Days2.Thursday) == Days2.Thursday; Console.WriteLine("Thursday {0} a meeting day.", test == true ? "is" : "is not"); // Output: Thursday is a meeting day.