重拾VB6(11):再论数据类型

2024-01-09 15:08
文章标签 数据类型 vb6 重拾 再论

本文主要是介绍重拾VB6(11):再论数据类型,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

来自MSDN-2001-OCT: Visual Tools and Languages/Visual Studio 6.0 Documentation/Visual Basic Documentation/Using Visual Basic/Programmer’s Guide/Part 2: What Can You Do With Visual Basic/More About Programming

 

一、创建自己的数据类型

(1)注意   假如声明了使用Dim 关键字,标准或类模块中的用户自定义类型将缺省为公有的。假如您希望自定义类型为私有的,确保您用Private 关键字将其声明为私有。在窗体模块里用户定义类型只能声明为私有的。

(2)如果两个变量都属于同一个用户定义类型,也可以将其中一个变量赋给另一个变量。这种赋值是将一个变量的所有元素赋给另一个变量的对应元素。YourSystem = MySystem

(3)可以使用用户定义类型传递过程参数。注意 如果要传递窗体或类模块中的用户定义类型,则过程必须是私有的。用户定义类型总是通过引用传递,所以被调用过程可以修改参数并将其返回到调用过程中。注意   由于用户定义的类型总是由引用来传递的,包含在用户定义类型中的所有数据都将传递到过程并从过程中返回。对于包含大数组的用户定义类型,这将会导致较差的性能,特别是在客户/服务器应用程序中,在客户/服务器应用程序中,过程可能运行在一个远程机器上。在这种情况下,最好只将必要的数据从用户定义类型中抽取并传递。

(4)用户定义类型也可以包含对象。提示 因为 Variant 数据类型能存储许多不同类型的数据,所以当希望使用用户定义类型时,在许多情况下也可以使用 Variant 数组。实际上,Variant 数组比用户定义类型更灵活,因为存储在每个元素中的数据的类型可以随时改变,而且还可以将数组定义为动态的,必要时可以改变其大小。但是,Variant 数组使用的内存总是要多于相当的用户定义类型。

(5)用户定义类型可以包含其他的用户定义类型。为了保证代码的可读性和易于调试,应尽量将定义用户定义数据类型的所有代码限制在一个模块的范围内。

二、通过枚举使用常数集进行工作

(1)枚举可以通过在标准模块或公用类模块中的声明部分用 Enum 语句声明一个枚举类型来创建。

(2)在缺省情况下,在枚举中的第一个常数被初始化为 0,其后的常数则初始化为比其前面的常数大 1 的数值。

(3)Visual Basic 提供了内置的枚举 vbDayOfWeek,包括了与星期的七天相对应的常数。

(4)可以使用赋值语句显式地给枚举中的常数赋值。可以赋值为任何长整数,包括负数。

(5)注意 Visual Basic 将枚举中的常数数值看作长整数。如果将一个浮点数值赋给一个枚举中的常数,Visual Basic 会将该数值取整为最接近的长整数。

(6)当引用单个常数时,为了避免模糊引用,应在常数名称前冠以枚举名。

Debug . Print "Days.Saturday = " & Days . Saturday
Debug . Print "WorkDays.Saturday = " & WorkDays . Saturday

(7)当向一个枚举中的常数赋值时,也可以使用另一个枚举中的常数的数值。  

Public Enum WorkDays
   Sunday = 0
   Monday
   Tuesday
   Wednesday
   Thursday
   Friday
   Saturday = Days . Saturday - 6
   Invalid = - 1
End Enum

(8)声明枚举类型后,就可以声明该枚举类型的变量,然后使用该变量存储枚举常数的数值。

注意 尽管通常只将枚举常数数值赋给枚举类型的变量,但也可以将任何长整数数值赋给该变量。当对与枚举常数不相关联的变量赋值时,Visual Basic 不会产生错误。

三、数组的高级功能

3.1 数组赋值

(1)将一个数组赋给另外一个数组:

Sub ByteCopy( oldCopy() As Byte , newCopy() As Byte)
    newCopy = oldCopy
End Sub

(2)给维数和/或数据类型不同的数组赋值的尝试,可能成功,也可能失败。错误可能发生在编译时,也可能发生在运行时(例如,如果数据类型不能强制转换或赋值试图重新声明 (ReDim) 一个固定大小的数组)。作为程序员,其任务就是添加错误处理以确保数组在赋值之前是相容的。

3.2 从函数返回数组

(1)数组的数据类型必须和函数的数据类型相同(在本例中是字节)。因为这是一个函数调用,传递数组时不必带括号。注意   尽管可以通过赋值给另一个数组(ArrayFunction = x())来返回一个数组,但出于性能方面的考虑,并不推荐使用这种方法。

Public Function ArrayFunction(b As Byte) As Byte()
    Dim x( 2) As Byte
    x( 0) = b
    x( 1) = b + CByte( 200)
    x( 2) = b + b
    ArrayFunction = x
End Function

Dim ReturnArray() As Byte
ReturnArray() = ArrayFunction(b)

(2)当调用一个返回数组的函数时,用来保存返回值的变量也必须是一个数组,而且其数据类型必须和函数相同,否则将显示一个“类型不匹配”的错误。

 

四、用集合替代数组

在某些情况下,将项目存储在集合中可能比存储在数组中效率更高。如果处理较小的、动态的项目集时,可能希望使用集合。

这篇关于重拾VB6(11):再论数据类型的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/587536

相关文章

Rust 数据类型详解

《Rust数据类型详解》本文介绍了Rust编程语言中的标量类型和复合类型,标量类型包括整数、浮点数、布尔和字符,而复合类型则包括元组和数组,标量类型用于表示单个值,具有不同的表示和范围,本文介绍的非... 目录一、标量类型(Scalar Types)1. 整数类型(Integer Types)1.1 整数字

C 语言的基本数据类型

C 语言的基本数据类型 注:本文面向 C 语言初学者,如果你是熟手,那就不用看了。 有人问我,char、short、int、long、float、double 等这些关键字到底是什么意思,如果说他们是数据类型的话,那么为啥有这么多数据类型呢? 如果写了一句: int a; 那么执行的时候在内存中会有什么变化呢? 橡皮泥大家都玩过吧,一般你买橡皮泥的时候,店家会赠送一些模板。 上

C语言程序设计(数据类型、运算符与表达式)

一、C的数据类型 C语言提供的数据类型: 二、常量和变量 2.1常量和符号常量 在程序运行过程中,其值不能被改变的量称为常量。 常量区分为不同的类型: 程序中用#define(预处理器指令)命令行定义变量将代表常量,用一个标识符代表一个常量,称为符合常量。 2.2变量 变量代表内存中具有特定属性的一个存储单元,用来存放数据,在程序运行期间,这些值是可以 改变的。 变

Redis地理数据类型GEO

通常要计算两个地理位置的距离不是很方便,这里可以直接通过Redis提供的GEO操作来完成地理位置相关的计算 1)添加地理位置 语法:geoadd key longitude latitude member [longitude latitude member] ...字段说明:key:存放地理位置的集合名称longitude:地理坐标的经度latitude:地理坐标的纬度member:表示这

【JavaScript】基本数据类型与引用数据类型区别(及为什么String、Boolean、Number基本数据类型会有属性和方法?)

基本数据类型   JavaScript基本数据类型包括:undefined、null、number、boolean、string。基本数据类型是按值访问的,就是说我们可以操作保存在变量中的实际的值。 1)基本数据类型的值是不可变的 任何方法都无法改变一个基本类型的值,比如一个字符串: var name = "change";name.substr();//hangconsole.log

【MySQL】MySQL常用的数据类型——表的操作

前言: 🌟🌟本期讲解关于MySQL常用数据类型,表的简单使用,希望能帮到屏幕前的你。 🌈上期博客在这里:http://t.csdnimg.cn/wwaqe 🌈感兴趣的小伙伴看一看小编主页:GGBondlctrl-CSDN博客   目录 前言: 📚️1.MySQL常用的数据类型 1.1数值类型 1.2字符串类型 1.3日期类型  📚️2.表的简单操作 2.1创建

c语言(三种语言对比、数据类型及输出、变量存储、内存分配)

数据类型: 变量的输出: c语言不能直接打印数字,字符,只能将他们转化成字符串打印, printf("%d\n", num); %d 是整数占位符,将来由逗号右边的变量的值占据这个位置。(%i和%d是一样的) %f 是浮点数占位符,默认输出小数点后6位,若只想输出小数点后两位:%.2f %c 是字符型数据占位符。

SpinalHDL之数据类型(一)

本文作为SpinalHDL学习笔记第五十四篇,介绍SpinalHDL的Bool数据类型。 SpinalHDL技术交流QQ群: Note: 1.本群是个人技术交流群,不是什么官方答疑群; 2.提问是你的权利,但回答不是别人的义务; 3.可以潜水,不能灌水; 4.请文明交流,做这行的都算高层次人才,希望你有对应的高素质; 5.不强制改名,但希望统一格式:姓名(昵称也行)-公司/学校-

MySQL数据类型和Schema优化(二)

MySQL数据类型和Schema优化 MySQL合适的数据类型日期和时间类型(datetime、timesamp)整数类型实数类型(float\double\decimal)字符串类型(Varchar、Char) Schema设计缓存表和汇总表 MySQL 良好的逻辑设计与物理设计是高性能的基石,应该根据具体业务需求的查询语句来设计schema,这往往需要权衡各种因素。 比如

【VB6|第27期】如何在VB6中使用Shell函数实现同步执行

日期:2024年9月1日 作者:Commas 签名:(ง •_•)ง 积跬步以致千里,积小流以成江海…… 注释:如果您觉得有所帮助,帮忙点个赞,也可以关注我,我们一起成长;如果有不对的地方,还望各位大佬不吝赐教,谢谢^ - ^ 1.01365 = 37.7834;0.99365 = 0.0255 1.02365 = 1377.4083;0.98365 = 0.0006 文