Temporary Types
 
创建用户定义类型的临时副本

语法

result = Type( initializers , ... )
or
result = Type<typename >( initializers , ... )

参数

initializers
类型的初始值
typename
TypeUnion的名称

返回值

该类型的临时副本。

说明

用于创建临时类型。如果没有明确给出typename ,如果可能,将从其使用中推断出来。临时副本的使用可能包括将其赋值给变量,将其作为参数传递给过程,或将其作为值从过程返回。

对于没有构造函数的类型,如果所有类型的数据字段都是数字基元,并且没有任何默认的初始值,则允许使用临时类型语法,但如果同时没有析构函数,则编译器会直接赋值而不使用临时副本。

当创建临时副本时,类型的Constructor(如果有的话)将被调用,并且类型的Destructor(如果有的话)将在使用之后立即被调用。但是当有一个构造函数时,临时类型表达式可能只是被替换为typename( initializers , ... ).

它不仅可以创建用户定义类型的临时副本,还可以创建预定义数据类型作为可变长度字符串或任何数字数据类型(所有标准数据类型,不包括固定长度字符串)的临时副本。

如果要更改所有记录,它也可以用作比With(见下文)更短的快捷方式。

例子

Type Example
    As Integer field1
    As Integer field2
End Type

Dim ex As Example

''通过设置每个字段填充类型
ex.field1 = 1
ex.field2 = 2

''使用WITH设置每个字段来填充类型
With ex
    .field1 = 1
    .field2 = 2
End With

'' Fill the variable'具有临时类型的字段
ex = Type( 1, 2 )


''将用户定义的类型传递给使用临时类型的过程
''可以推断出类型。

Type S
  As Single x, y
End Type

Sub test ( v As S )
  Print "S", v.x, v.y
End Sub

test( Type( 1, 2 ) )


''将用户定义的类型传递给使用临时类型的过程
''其中类型不明确,必须指定类型的名称。

Type S
  As Single x, y
End Type

Type T
  As Integer x, y
End Type

Union U
  As Integer x, y
End Union

''重载程序测试()
Sub test Overload ( v As S )
  Print "S", v.x, v.y
End Sub

Sub test ( v As T )
  Print "T", v.x, v.y
End Sub

Sub test ( v As U )
  Print "U", v.x, v.y
End Sub

'' Won'工作:模糊
''测试(类型(1,2))

''指定类型的名称
test( Type<S>( 1, 2 ) )
test( Type<T>( 1, 2 ) )
test( Type<U>( 1 ) )


与QB差别

  • 新的FreeBASIC

参考