注意 | 此命令仅用于 Xbase++ 方言。 |
声明和实现类的方法,包括类实例和类本身的方法
Method forward declaration
[Modifiers] METHOD <MethodName,...> [IS <MethodName>] [IN <SuperClass>]
Access/Assign method forward declaration
[Attributes] ACCESS ASSIGN [CLASS] METHOD <MethodName> [VAR <VarName>] [AS <idType>]
[Attributes] ACCESS | ASSIGN [CLASS] METHOD <MethodName> [VAR <VarName>] [AS <idType>]
Method inline declaration
[Attributes] INLINE [CLASS] METHOD <MethodName>[ [([<idParam> [AS|REF|OUT|IN <idType>] [, ...])] ) [AS <idType>]
[=> <expression>]
CRLF
[<Body>]
[END METHOD]
Attributes | 一个可选的特性列表,用于描述实体的元信息,例如在 MsTest 类库中包含测试的方法/函数上的 [TestMethod] 属性。请注意,当特性写在关键字上方的行时,特性必须在同一行或以分号结尾。 |
Modifiers | 一个可选的修饰符列表,用于指定实体的可见性或范围,例如:PUBLIC, PROTECTED, HIDDEN, INTERNAL, SEALED, ABSTRACT 或 STATIC. |
<MethodName,...> | 是一个用逗号分隔的列表,其中包含所声明的实例方法的名称。方法名称与函数和变量名称的约定相同。它必须以下划线或字母开头,并且必须包含字母数字字符。 |
IS <MethodName> | X# 不支持 IS methodname 子句 |
IN <SuperClass> | X# 不支持(也不需要)IN Superclass 子句 |
Attributes | 一个可选的特性列表,用于描述实体的元信息,例如在 MsTest 类库中包含测试的方法/函数上的 [TestMethod] 属性。请注意,当特性写在关键字上方的行时,特性必须在同一行或以分号结尾。 |
CLASS | 可选修饰符,用于指定声明为类方法或类属性 |
ACCESS ASSIGN | 声明一个属性的 Get/Set 方法。您可以使用其中一个或两个关键字。 |
<VarName> | Get/Set 方法的名称可能与其实现的属性不同。 |
AS <idType> | 指定数据类型。如果省略,编译器依据编译选项来决定数据类型,或者是 USUAL,或者是由编译器自行决定。 |
INLINE | 指定整个方法包含在 CLASS ... ENDCLASS 关键字之间(其他方法称为前向声明) |
<idParam> | 参数变量。 以这种方式指定的变量会自动声明为局部变量。 这些变量也称为形参(形式参数),用于接收调用实体时传递的参数。 |
AS | REF | OUT | IN <idType> | 指定参数变量的数据类型(称为强类型)。 AS 表示参数必须通过值传递,REF 表示参数必须通过带 @ 操作符的引用传递。OUT 是一种特殊的 REF 参数,不必在调用前赋值,必须在实体内部赋值。IN 参数作为 READONLY 引用传递。 |
列表中的最后一个参数也可以声明为 PARAMS <idType>[] ,这将告诉编译器函数/方法可以接收零个或多个可选参数。 |
使用 CLIPPER 调用约定的函数或方法将被编译为一个带有单个参数的函数,该参数被声明为 Args PARAMS USUAL[] 。 |
=> <Expression> | 替代实体多行正文(body)的单一表达式。不能与正文(body)一起编译 |
<Body> | 构成此主体代码的程序语句。 |
<Body> 可以包含一个或多个 RETURN 语句,以将控制权返回给调用例程,并作为函数的返回值。如果未指定 RETURN 语句,当函数定义结束时,控制权将返回给调用例程,并且函数将根据指定的返回值数据类型返回一个默认值(如果返回值没有强类型,则返回 NIL)。 |
不能与表达式主体(Expression Body)结合使用。 |
END METHOD | 可选的结束语句,用于表示内联 METHOD 主体的结束 |
方法的可见性由用 EXPORTED:、PROTECTED:、HIDDEN: 或 INTERNAL 语句之一设置的可见性属性决定:
在 Xbase++ 中,有一些保留的方法名:
Init | 这是构造函数的名称。 |
InitClass | 这是类构造函数的名称。 |
在 .Net 中,构造函数的实现与 Xbase++ 有些不同。
•类构造函数不能有任何参数。
•Init() 方法的参数成为构造函数的参数。