chap05 C# 高级类型

原文链接:http://www.cnblogs.com/wangshide/archive/2012/06/30/2570927.html

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.

转载于:https://www.cnblogs.com/wangshide/archive/2012/06/30/2570927.html

上一篇:JavaScript(jQuery)实现打印英文格式日期


下一篇:Java基础-Java中的Calendar和Date类