20110223C#程序员参考手册

索引器是一种语法上公用程序,它可以让一个对象像数组一样被索引。索引器类似于属性,不同之处在于它们的访问器采用参数。

  • 索引器使得对象可按照与数组相似的方法进行索引。

  • get 访问器返回值。set 访问器分配值。

  • this 关键字用于定义索引器。

  • value 关键字用于定义由 set 索引器分配的值。

  • 索引器不必根据整数值进行索引,由您决定如何定义特定的查找机制。

  • 索引器可被重载。

  • 索引器可以有多个形参,例如当访问二维数组时。

  •     class Program
        {
            static void Main(string[] args)
            {
                sampleCollection<string> str = new sampleCollection<string>();
                str[0] = "Microsoft China";
                Console.WriteLine(str[0]);
            }
        }
        class sampleCollection<T>
        {
            private T[] arr = new T[100];
            public T this[int i]
            {
                get
                {
                    return arr[i];
                }
                set
                {
                    arr[i] = value;
                }
            }
        }

委托:提供具有特定返回类型和参数列表的方法的一般引用类型。和c++函数指针类似,但是委托是面向对象。

  public delegate string myMethodDelegate(int myint);
    class Program
    {
        static void Main(string[] args)
        {
            /*
             * delegate是C#中的一种类型,它实际上是一个能够持有对某个方法的引用的类。与其它的类不同,
             * delegate类能够拥有一个签名(signature),并且它只能持有与它的签名相匹配的方法的引用。
             * delegate本质就是个函数指针,指向指令所在的内存区域。
             */
            Program pro = new Program();
            myMethodDelegate mydelegate = new myMethodDelegate(pro.showmsg);
            myMethodDelegate mydelagetesta = new myMethodDelegate(showmsgbystatic);
            Console.WriteLine(string.Format("1 msg:{0},{1}", mydelegate(1), mydelagetesta(1)));
            Console.WriteLine(string.Format("-1 msg:{0},{1}", mydelegate(-1), mydelagetesta(-1)));
        }
        public string showmsg(int i)
        {
            if (i > 0) { return ("positive"); }
            else if (i < 0) { return ("negative"); }
            else { return ("zero"); }
        }
        public static string showmsgbystatic(int i)
        {
            if (i > 0) { return ("+"); }
            else if (i < 0) { return ("-"); }
            else { return (" "); }
        }

    }

事件:是C#表明发生了某件事的一种方法.

捕获

事件委托把两个对象发送给每个事件处理方法,第一个是对生成事件的对象的引用,称之为事件源.第二个对象是将system.Eventargs类的一个实例,或者Eventargs的一个派生类实例,该对象包含了事件的额外信息。

在发生其他类或对象关注的事情时,或对象可通过事件通知它们。发送(或引发)事件的类称为“发行者”,接收(或处理)事件的类称为“订户”。

事件具有以下特点:

  • 发行者确定何时引发事件,订户确定执行何种操作来响应该事件。

  • 一个事件可以有多个订户。一个订户可处理来自多个发行者的多个事件。

  • 没有订户的事件永远不会被调用。

  • 事件通常用于通知用户操作(如:图形用户界面中的按钮单击或菜单选择操作)。

  • 如果一个事件有多个订户,当引发该事件时,会同步调用多个事件处理程序。要异步调用事件,请参见使用异步方式调用同步方法

  • 可以利用事件同步线程。

  • 在 .NET Framework 类库中,事件是基于 EventHandler 委托和 EventArgs 基类的。

指针和C#:在C#中指针的使用被认为是“不安全”的。而使用指针的三种情况:

1.使用指针以可能最有效率的方式访问数据。

2.使用指针使C#程序和非.NET程序代码兼容。

3.让用户能够访问内存地址——也许是调试应用程序时候。

3

属性标志(attribute)是一种标记,它向C#编译器提供了有关代码元素的额外信息。

posted @ 2011-02-23 13:47  Jon.Zhiwei@hotmail.com  Views(183)  Comments(0)    收藏  举报