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