Show/Hide Toolbars

XSharp

 

X# 中的 FoxPro 方言有自己的 Array 类型。这种类型不是用 AS 关键字声明的,而是根据上下文推导出数组类型。

 

以下代码行都生成兼容 FoxPro 的数组:

LOCAL ARRAY aTest(1,2)     // LOCAL ARRAY
PUBLIC ARRAY aPublicArray[10]   // PUBLIC ARRAY
DIMENSION AnotherArray(3,4)   // DIMENSION 也支持方括号
DECLARE ThirdArray[10]     // DECLARE 使用方括号,但也支持使用括号

FoxPro 兼容数组的元素都是 USUAL 类型的。
FoxPro 数组不能使用 AAdd() 动态调整大小。要调整它们的大小,需要使用 DIMENSION 语句和新的维度。

在内部,FoxPro 数组是单维数组。但也可以将它们重新定义为二维数组。
因此,这个示例中的第三个数组也可以被视为包含 12 个元素的单维数组。

 

建议使用尖括号来访问 FoxPro 数组的元素。这样不会产生歧义,编译器可以在编译时解析。

如果想要使用括号来访问 FoxPro 数组元素,需要启用 /fox  编译选项。此编译选项还会启用将单个值分配给 FoxPro 数组的所有元素的行为。

 

在内部,FoxPro 数组是作为从通用 XBase 数组类型派生的类实现的。

因此,X# 运行时中接受数组作为参数的所有函数也将接受 FoxPro 数组。
当函数的 FoxPro 实现与 Xbase 实现之间存在不同行为时,这将在运行时处理。

 

实现

ARRAY 类型在类 XSharp.__FoxArray 中实现。

 

ARRAY 的 Usualtype 值为 5