vb窗体实例化与set语句的用法

简介: vb窗体实例化与set语句的用法

什么是实例化:

 类(Class)是面向对象程序设计(OOP,Object-Oriented Programming)实现信息封装的基础。类是一种用户定义的引用数据类型,也称类类型。每个类包含数据说明和一组操作数据或传递消息的函数。类的实例称为对象。


 对象(object) 是一件事、一个实体、一个名词,可以获得的东西,可以想象有自己的标识的任何东西。一些对象是活的,一些对象不是。现实世界中的例子有汽车、人、房子、桌子、植物、支票、雨衣。


实例和对象是一种东西,叫法不同而已,实例化也可理解为:把抽象的类变成具体的对象。


 举个很简单的例子,你创建了一个猫的类,等你实例化,就定位到某一只猫身上了。这只猫就有了猫的共同属性,例如重量、颜色等。那些属性的属性值就是这只猫的特征。

vb的窗体实例化:

  vb6是基于面向对象的语言,他没有继承的概念,所谓“标准控件”,包括窗体,都是直接使用的对象。

  但学生里的代码任然将窗体实例化:

Sub Main()
    Set FmainForm = New frmMain '显示主窗体实例
    FmainForm.Show
End Sub

 也许是为了让大家习惯面向对象,如果抽象到生活中,你想要有一扇窗,就必须安装一扇,安装上的这一扇就相当于New了个对象,有了这个对象就可以进行操作了。


 在其他语言中,例如c++/C#/ ,要使用一个窗体,是通过首先继承一个类并重载相关的属性与方法,然后实例化这个类来实现的。

set语句的用法:

 Set 语句:引用类赋值,一般是对VB中除基本数据类型以外的变量进行赋值的语句。指针copy了一份给了新变量,新变量处理复制过来的指针所指向的对象。


 Let语句:值类型赋值,数据copy了一份给了新变量,新变量处理复制过来的数值,如: Let a=b,let可省略不写。


语法:

Set objectvar = {[New] objectexpression | Nothing}


objectvar:必需的。是变量或属性的名称,遵循标准变量命名约定。如果 objectvar 包含了一个对象引用,则在赋新值时释放该引用。


New:可选的。通常在声明时使用 New,以便可以隐式创建对象。如果 New 与 Set 一起使用,则将创建该类的一个新实例。

dim a as object    'a 变量没有实例化,只是说明a是这么个类型的变量,但他的功能是不可用的'
dim a as new object  '这时a是实例化的,可以使用'
'或者以下两种写法也可以将a实例化'
set a=createobject("xxxxxx") 
set a=new object

   这个时候创建出来的对象实际只和a联系在一起,如果有set b=a 这时候,相当于这个a实例又有了b这个名字,两个变量操作同一个对象实例:

Dim a As New Collection   '定义a为一个集合对象'
a.Add "test"          'a 集合中添加一个元素'
Dim b As Object       '定义B'
Set b = a           '令b引用a,也就是b的指针指向了a'
Debug.Print b(1)      '这时候b的第一个元素里,我们可以得到刚才在a添加的那个test'
b.Add "addition"      '在b添加一个元素'
Debug.Print a(1), a(2)    '在a里同样能得到新增的这个元素'

object expression(对象表达式):必需的。由对象名,所声明的相同对象类型的其它变量,或者返回相同对象类型的函数或方法所组成的表达式。


Nothing:可选的。断绝 objectvar 与任何指定对象的关联。若没有其它变量指向 objectvar 原来所引用的对象,将其赋为 Nothing 会释放该对象所关联的所有系统及内存资源。


说明:


 为确保合法,objectvar 必须是与所赋对象相一致的对象类型。

 Dim、Private、Public、ReDim以及 Static 语句都只声明了引用对象的变量。


 下面的示例说明了如何使用 Dim 来声明 Form1 类型的数组。Form1 实际上还没有实例。然后使用 Set 将新创建的 Form1 的实例的引用赋给 myChildForms 变量。在 MDI 应用程序中可以使用这些代码来创建子窗体。

Dim myChildForms(1 to 4) As Form1
Set myChildForms(1) = New Form1
Set myChildForms(2) = New Form1
Set myChildForms(3) = New Form1
Set myChildForms(4) = New Form1

  通常,当使用 Set 将一个对象引用赋给变量时,并不是为该变量创建该对象的一份副本,而是创建该对象的一个引用。可以有多个对象变量引用同一个对象。因为这些变量只是该对象的引用,而不是对象的副本,因此对该对象的任何改动都会反应到所有引用该对象的变量

相关文章
|
存储 前端开发 对象存储
一文搞懂Map与Set的用法和区别!
前言 作为前端开发人员,我们最常用的一些数据结构就是 Object、Array 之类的,毕竟它们使用起来非常的方便。往往有些刚入门的同学都会忽视 Set 和 Map 这两种数据结构的存在,因为能用 set 和 map 实现的,基本上也可以使用对象或数组实现,而且还更简单。 但是,存在必然合理,当你真正了解 Map 和 Set 之后,你就会发现它们原来时如此美好!
2209 0
一文搞懂Map与Set的用法和区别!
|
1月前
|
存储 C++ 容器
【C++】map、set基本用法
本文介绍了C++ STL中的`map`和`set`两种关联容器。`map`用于存储键值对,每个键唯一;而`set`存储唯一元素,不包含值。两者均基于红黑树实现,支持高效的查找、插入和删除操作。文中详细列举了它们的构造方法、迭代器、容量检查、元素修改等常用接口,并简要对比了`map`与`set`的主要差异。此外,还介绍了允许重复元素的`multiset`和`multimap`。
30 3
【C++】map、set基本用法
|
3月前
|
SQL XML Java
mybatis复习03,动态SQL,if,choose,where,set,trim标签及foreach标签的用法
文章介绍了MyBatis中动态SQL的用法,包括if、choose、where、set和trim标签,以及foreach标签的详细使用。通过实际代码示例,展示了如何根据条件动态构建查询、更新和批量插入操作的SQL语句。
mybatis复习03,动态SQL,if,choose,where,set,trim标签及foreach标签的用法
|
3月前
|
索引 Python
Pandas中的时间序列利器:set_index用法
Pandas中的时间序列利器:set_index用法
98 0
|
5月前
|
存储 JSON 关系型数据库
mysql中find_in_set()函数用法详解及增强函数
总结而言,`FIND_IN_SET()`是MySQL中处理由逗号分隔的字符串列表的一种便捷方法,尤其适用于列表相对较短且不经常更改的场景。然而,对于更为复杂的需要高性能和可扩展性的数据库设计,它可能不是最优选择,应考虑使用更加正规化的数据库结构。
737 2
mysql中find_in_set()函数用法详解及增强函数
|
6月前
|
存储 索引 Python
Python教程:深入了解 Python 中 Dict、List、Tuple、Set 的高级用法
Python 中的 Dict(字典)、List(列表)、Tuple(元组)和 Set(集合)是常用的数据结构,它们各自有着不同的特性和用途。在本文中,我们将深入了解这些数据结构的高级用法,并提供详细的说明和代码示例。
306 2
Java-----抽象类为什么不能实例化?抽象方法为什么不能被static修饰?set和get方法的使用方法
Java-----抽象类为什么不能实例化?抽象方法为什么不能被static修饰?set和get方法的使用方法
117 0
|
7月前
|
Java 开发者
Java中三种Set的实现类的用法和区别
Java中三种Set的实现类的用法和区别
|
存储 C++ 容器
C++ 第九节——map/set(用法+底层原理+模拟实现)
们需要知道的是,Map和Set的底层都是红黑树。
838 1
C++ 第九节——map/set(用法+底层原理+模拟实现)
|
7月前
|
C++
stl中set、map的用法
stl中set、map的用法