学习笔记(一)

来源:互联网 发布:手机温度湿度计软件 编辑:程序博客网 时间:2024/04/29 19:34

 一,.MSIL&CLS  

.NET Framework能够识别的语言只有一种,称为MSIL---微软中间语言,这是一种带有面向对象特性的"汇编"语言,然后,为每种高级语言提供一个编译器,把由这些高级语言写成的程序翻译成MSIL语言,最后由.NET Framework执行这些MSIL代码.

          为了能够正确的把这些高级语言转换成MSIL,微软规定了一个通用语言系统(Common Language System.CLS),要求所有运行在.NET平台之上的高级语言必须支持这个CLS

二,   类的构造函数与析构函数 

          当使用NEW创建一个类的对象时,一个特殊的Sub过程被调用,

                 sub new()

                end sub

      这个Sub过程成为类的"构造器"---Contructor,一个类可以有多个构造函数,这些函数就构成重载关系.,并且这些函数可以互相调用,在调用时有一个原则:构造函数调用作为实例构造函数中的第一条语句有效.

      例如:        public sub new()

                         end sub

                        public sub new(byval str as string )

                       myclass.new()

                      .................其他语句

                    end sub

    类类型的变量都是引用类型的

    有了类的创建就有类的销毁,有一个Sub Finialize()过程称为析构函数。当一个对象占用的内存要被系统回收时,.NET Framework所提供的"废品回收站"就会调用Sbu Finialize()释放对象所占用的内存。

   Sub Finialize()过程可用于释放除内存以外的其他种类的系统资源。

三,   传值的两种方式(Byval&Byref)

       Byval和Byref代表了两种不同的参数传送方式:传值和传址

四,   面向对象的特性

     1,继承

            Public Class a

               end Class

           public class b: inherit a  'b是a的子类,a是b的父类

          end class

      2,类成员的可访问性

          public :可以被其他类所访问

         protected : 仅可以被其子类访问,其他类都无法访问

        private: 仅可以被其类本身访问,其他类都无法访问

      3,覆盖: 就是由子类重新定义父类的方法

         父类的方法在定义时加上 overridable,表示可被子类覆盖,也就是重新定义

         而子类在重定义方法时加上 overrides 就表示重新定义父类的方法

     4,屏蔽

        如果子类在于父类一样的方法前面加上 shadows关键字,则称子类"屏蔽"父类的方法

        当子类屏蔽父类同名方法时,子类和父类的这两个方法就各管各的了,好像两个不同名的方法,具体调用那个,由变量的类型决定.

    5,类型转换

       CType和DirectCast的区别

       只要定义了表达式与类型之间的有效转换,CType即可成功,而DirectCast则要求对象变量的运行时类型与指定的类型相同,例如:

       dim i as integer=2

       dim j as double=directcast(i,double) '不成功,因为2位integer类型,而Ctype可以成功.

       6, 装箱--------本人一直不明白的概念

         在.NET中,子类对象变量可以直接赋给父类变量,而Object类是所有对象的基类,因此Object可以容纳任何类型的对象变量,代码如下:

                   1,     dim i as integer=100

                   2,     dim obj as object

                   3,   obj=i

                   4,   dim ret as integer

                    5,ret=obj+1    '装箱

                    6 ,msgbox(ret)

            当把整形变量 i 赋给 object 时,.NET虚拟机会在运行时临时创建一个没有名字的Object对象,然后把 i 值包进去,再赋给一个Object类型的变量Obj,这个过程就叫"装箱"(Box),把 Obj 取出的过程就是拆箱,如第5句.

 

原创粉丝点击