计算机二级VB辅导:类和结构计算机等级考试

文章作者 100test 发表时间 2010:01:01 10:54:23
来源 100Test.Com百考试题网


  刚上班,就被大李找去了。“Henry,昨天对窗体的操作给你最大的体会是什么?”
  “当然有体会,最深的印象就是VB.NET中类是无所不在了,连窗体都成为了一个类。”我深有感触地说。
  “没错,类是我们用来构造VB.NET应用程序时的最基本的编程结构了。你也学习过最基本的面向对象编程了,那么你能告诉我,结构与类有什么相似之处与不同之处吗?”
  “好的。”我口中回答着,心里还是有点不以为然,“结构和类,都是对成员的封装方式,但是类可以支持继承……”
  大李一边点着头,一边听我说,听到我最后支吾着没了声音才抬起头“还有呢?”
  “没了。”我这时才开始心中发慌。
  “呵呵,相同之处我想你心中还是明白的,它们都含有成员,包括构造函数、方法、属性、字段、常量、枚举和事件。都可以实现接口,都有共享的构造函数。”
  “对不起,最后那一句,都有构造函数是什么意思?结构的构造函数我从来没有自己定义过。”
  大李立刻写下了这一段代码:
  Structure SHenry
  Public x, y As Integer
  Public Sub New(ByVal x As Integer, ByVal y As Integer)
  Me.x = x
  Me.y = y
  End Sub
  End Structure
  Sub main()
  Dim H1 As SHenry = New SHenry()
  Dim H2 As SHenry = New SHenry(2, 1)
  End Sub
  “真的呢,可以实现结构的构造函数!”我还一直没有注意过这个问题。“可是,你只定义过一个带参数的构造函数,H2的实例化我是明白的,可是H1怎么也能通过编译器检测呢?”其实我心中更想问的是结构怎么也能实例化成对象,那和类真的很象呀。
  “原因么,”大李推了推眼镜,“每个结构都隐式地具有 Public 无参数实例构造函数,该构造函数产生结构的默认值。所以你平时不写构造函数,也一样可以New出一个结构来,对吧?事实上,我们反而在结构类型声明中不可能声明无参数实例构造函数。只能声明‘参数化’实例构造函数。”
  “都可以用new来实例化,结构和类在内存分配上难道也是一样的吗?”这个问题我一直挺不明白,正好借这个话题问一下。
  “在这上面,差别可就大了。”看到大李喜笑颜开的样子,我就知道问到点子上了,立刻摆开架势,作认真倾听状。
  “简单来说,结构是值类型,而类是引用类型。因此,结构使用堆栈分配,类使用堆分配。”
  看到我迷茫的双眼,大李笑了笑,在电脑上飞快地写了个示例:
  Class CHenry
  Public z As Integer = 0
  ‘能对非静态成员初始化也是一个区别
  End Class
  Sub main()
  Dim H1 As SHenry = New SHenry(0, 2) ’赋给H1.x=0
  Dim H2 As SHenry = H1
  H2.x = 26
  Dim R1 As New CHenry() ’R1.z也是等于0
  Dim R2 As CHenry = R1
  R2.z = 26
  Console.WriteLine("H1.x=" 

相关文章


VB命题专家预测试卷命题专家预测笔试试卷(2)计算机等级考试
VB命题专家预测试卷命题专家预测笔试试卷(1)计算机等级考试
计算机二级VB辅导:脆弱的基类计算机等级考试
计算机二级VB辅导:重载与隐藏计算机等级考试
计算机二级VB辅导:类和结构计算机等级考试
计算机二级VB辅导:共享成员计算机等级考试
计算机二级VB辅导:构造与析构计算机等级考试
计算机二级VB辅导:类的继承计算机等级考试
计算机二级VB辅导:失踪的窗体计算机等级考试
澳大利亚华人论坛
考好网
日本华人论坛
华人移民留学论坛
英国华人论坛