C#读书笔记

 

1.类的定义

 

internal class myclass{

 

   //internal表示只有当前项目中的代码才能访问,这个关键字可以不用写.

}

 

public class myclass{

    //public表示可以由其他项目中的代码来访问

}

 

public abstract class myclass{

  //abstract表示类是抽象的(不能实例化,只能继承,可以有抽象成员)

 

}

 

public sealed class myclass{

   //sealed 表示密封的(不能继承)

}

 

public class myclass : Imyinterface ,mybase{

  //这个声明是无效的,因为类(mybase)必须在接口(Imyinterface)的前面.

}

 

 

 表:是类定义中可以使用的访问修饰符的组合

修饰符

含义

无或internal

类只能在当前项目中访问

public

类可以在任何地方访问

abstract或internal abstract

类只能在当前项目中访问,不能实例化,只能继承.

public abstract

类可以在任何地方访问,不能实例化,只能继承

sealed 或 internal sealed

类只能在当前项目中访问,不能派生,只能实例化

public sealed

类可以在任何地方访问,不能派生,只能实例化


2.接口的定义

interface Imyinterface{

  //interface 表示定义接口的关键字

}

 

 

 

typeof()  //这是一个c#运算符,可以把类名转换为System.type对象).

 

析构函数

    在.net中使用的析构函数(由system.object类提供)叫作finalize(),但这

不是我们用于声明析构函数的名称.使用下面的代码,而不是重写finalize():

 class myclass

{

       ~myclass()

      {

          //在调用这个析构函数后,还将隐式地调用基类的析构函数,包括system.object根类中的finalize()调用.

       }

}

 

 

 

 

 public class myderivedclass:mybasclass

{

    ......

  

    public myderivedclass(int i,int j):base(i)

    {

       //其中,base关键字指定.net实例化过程使用基类中匹配指定签名的构造函数.

    }

}

 

 

 

 public class myderivedclass :mybaseclass

{

      public myderivedclass():this(5,6)

      {

         //this 这个关键字指定在调用指定的构造函数前,.net实例化过程对当前类使用非默认的构造函数.

      }

      ........

      public myderivedclass(int i,int j):base(i)

      {

      }

}

 

成员的访问级别:

    public-------- 成员可以由任何代码访问.

    private------- 成员只能由类中的代码访问(如果没有使用任何关键字,就默认使用这个关键字)

    internal-------成员只能由定义它的项目(程序集)内部的代码访问.

    protected------成员只能由类或派生类中的代码访问.

 

 class myclass

 {

    public readonly int MyInt=17;//readonly 表示这个字段只能在执行构造函数的过程中赋值,或由初始化赋值语句赋值.

}

 

 

方法定义中使用下述关键字:

  virtual-----方法可以重写.

  abstract-----方法必须在非抽象的派生类中重写(只用于抽象类中).

  override-----方法重写了一个基类方法(如果方法被重写,就必须使用该关键字).

   extern-----方法定义放在其他地方.

 

 

 public class mybaseclass

{

      public void dosomething()

       {

        }

}
 

 

public class myderivedclass :mybaseclass

{

     new public void dosomething()

      {

         //new 显示地说明,这是要隐藏的成员.

      }

}

 

 

 public partial class myclass

{

    //partial  表示部分类定义.使类的定义横跨多个文件.

                     例如把字段,属性和构造函数放在一个文件中,而把方法放在另一个文件中.

}

 

 

集合:

system.collections命名空间中有许多接口都提供了基本的集合功能:

IEnumerable 可以知代集合中的项.

Icollection(继承于IEnumerable)可以获取集合中项的个数,并能把项复制到一个简单的数组类型中.

IList(继承于IEnumerable和ICollection)提供了集合的项列表,并可以访问这些项,以及其他一些与项列表相关的功能.

IDictionary(继承于IEnumerableICollection)类似于IList,但提供了可通过键码值而不是索引访问的项列表.

system.array 类实现了Ilist,ICollection IEnumerable,但不支持Ilist的一些高级的功能,表示大小固定的项列表.

 

 

public class Animals : CollectionBase

{//索引符是一种特殊类型的属性,可以把它添加到一个类中,以提供类似于数组的访问.

   ......

    public Animal this[int animalIndex]

      {

           get

             {

                 return (Animal)List[animalIndex];

              }

             set

                {

                    List[animalIndex]=value;

                 }

       }

}

 

 

 

 

public class AddClass1

{

    public int val;

    public static AddClass1 operator +(AddClass op1,AddClass1 op2)

    {

       AddClass1 returnVal=new AddClass1();

       returnVal.val=op1.val +op2.val;

       return returnVal;

    }

}

posted @ 2010-01-29 10:42  一笑解千愁  Views(275)  Comments(0)    收藏  举报