C#学习笔记(四)

  继续编写贪吃蛇继续学习心的东西,发现新的问题。

一. C#中static关键字的使用
        由于C#程序是以类为基本结构实现的,因此C#中不存在独立于类外的函数(至少我这么认为),static在函数中的使用方法在C#中不再有意义

。而static在类中的两种基本使用方法并没有什么变化,这两种基本方法是静态成员函数和静态成员变量,与C++相同,静态成员函数属于类而不

属于对象,无法使用对象来改变其内容,与C++不同的是,静态成员变量的初始化可以在声明的同时进行,不必再采用类外负值的方法进行初

始化(实际上也不可能实现类外赋值,因为C#中类是基本结构,除了类没别的~~~)。静态成员函数是可以直接通过类来调用的函数,不能通过

类所创建的对象来访问,静态成员函数只能使用静态成员变量而不能使用其他变量。在C#中,可以通过static声明静态类,这个概念在C++中没有

。静态类中只有静态成员变量和静态成员函数,不允许有其他类型的变量和函数。静态类具体应该如何应用还需要以后进一步了解。

二.object类型
       object是一个通用的数据类型,它可以包含任何一种数据类型,不论这种类型是系统类型还是用户自定义类型。将其他类型的变量赋值给

object类型的变量时,系统需要对前者进行类型检查,以便能够给object类型分配足够的空间以容纳前者,这种操作被称为“装箱”。“装箱”操作的

基本过程是:首先为object分配一个引用,然后根据要“装箱”的变量类型在“堆”内分配足够大的空间,并将该变量的内容拷贝到堆中,最后将

object引用指向这个堆空间,完整“装箱”。与之相对应的是”拆箱“操作,即将一个已装箱的object类型强制转换为装箱前的原始类型。

装箱:
 int i=10;
 object o=i;
拆箱:
 int i=10;
 object o=i;
 
 int j=(int)i;  //拆箱 
由于”装箱“和”拆箱“操作需要做大量的匹配性检查工作,因此这种操作对性能有比较严重的影响,代替这两种操作的方法是”泛型“,以后学到再

议。

三. 写程序时用到的方法:

       1. 取绝对值: System.Math.Abs();  注意不能试图在前面 using System.Math,因为Math不是命名空间。
       2. 对于容器类型List,Stack等等,foreach(类型 类型变量 in 容器){... } ,该函数通过类型变量逐个调用了容器中数据,在{}中可以利用类型变量对每

项进行处理。
      3. 清除场景上的绘图:设场景为标准窗口,设
   class frmDC:Form{
    ...
   }
则,frmDC.Refresh()函数可以实现清屏。


另外到目前为止,在C#的类中还没有看到析构函数,由于析构函数在类的应用中意义重大,因此C#中不太可能取消析构函数,让程序员主动析

构又太不可思议,我猜C#中可能会有一种更先进的析构方法存在。  

你可能感兴趣的:(Math,C++,object,list,C#,Class)