X# 使用以下逻辑操作符:
操作符 |
示例 |
含义 |
< |
x < y |
小于(如果 x 小于 y 则为 true)。 |
<= |
x <= y |
小于或等于(如果 x 小于或等于 y 则为 true)。 |
> |
x > y |
大于(如果 x 大于 y,则为 true)。 |
>= |
x >= y |
大于或等于(如果 x 大于或等于 y,则为 true)。 |
= |
x = y |
等于 |
== |
x == y |
恒等于 |
<>, #, != |
x <> y, x # y, x != y |
不等于 |
$ |
x $ y |
如果第一个字符串是第二个字符串的子串,则返回 true(区分大小写!)。 |
IS |
x IS y |
类型兼容性。如果已求值的左操作数可以转换为右操作数(静态类型)中指定的类型,则返回 true。 |
ASTYPE |
x ASTYPE y |
类型转换。将左操作数转换为右操作数指定的类型(静态类型),但在 (T)x 会产生异常的情况下,返回 null 值。 |
对于字符串,"="和"=="操作符的行为有所不同,单个等号的行为也取决于运行时设置。
如果调用 SetExact(FALSE),那么"="操作符会将操作符右侧的字符等同到字符串的长度,而忽略左侧的剩余字符。这是默认设置。如果调用 SetExact(TRUE),"="和"=="对字符串的意义相同。
字符串的 <、<=、> 和 >= 操作符的行为取决于编译器选项和运行时设置。编译器选项-vo13 "'compatible string comparions(兼容字符串比较) "告诉编译器需要使用一个运行时函数来进行字符串比较。该运行时函数的行为取决于 SetCollation() 的设置。SetCollation() 有 4 种可能的值:
设置 |
描述 |
Clipper |
此设置将使用当前的 DOS 编解码器将两个字符串转换为 OEM 字符串。然后,将使用 SetNatDLL() 中定义的字符串比较/权重表对字符串进行比较。默认比较表使用基于字节数的权重。其他可用的比较语言包括德语、荷兰语、法语、俄语、西班牙语、SLOV852 等。 如果您的应用程序需要与 CLIPPER 程序共享文件,则应使用此设置。 |
Windows |
此设置将使用当前的 ANSI 编码页将两个字符串转换为 ANSI 格式。然后,将使用正常的 Windows ANSI CompareString() 代码对字符串进行比较。当应用程序与 VO 程序共享文件时,应使用此设置 |
Unicode |
此设置不会转换字符串,而是使用 .Net 中的 String.Compare() 方法进行普通的 Unicode 字符串比较。 |
Ordinal |
此设置不会转换字符串,而是使用 .Net 中的 String.CompareOrdinal() 方法进行正常的序数字符串比较。这是最快的方法。 |
字符串的 >= 和 <= 运算符也会考虑 SetExact() 的设置。两个字符串的 "equalness(相等性)"由与"="操作符相同的规则决定。