Show/Hide Toolbars

XSharp

 

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(相等性)"由与"="操作符相同的规则决定。