我知道在 .NET 中,对象可以实现 Comparator 和 Comparable 接口,然后覆盖 compare 和 compareto。
选项比较如何适应这一点?我知道 Option Compare 允许使用文本方法或二进制方法比较字符串。这些是比较器的不同实现吗?
Option Compare Text
来自原始的非.NET VB。它的存在是为了 VBx 用户的兼容性和/或方便,但它并不真正属于 .NET 框架范例,您可以在需要时提供比较器。
它只影响代码中完成的直接字符串比较,例如将运算符、、=
或应用于变量和类型的文字。它不会覆盖任何 Comparable 接口,并且该类也没有任何接口。<>
<
>
String
String
我个人更喜欢不混合范式,因此根本不使用Option Compare Text
。当我需要不区分大小写的比较时,我使用String.Compare(s1, s2, True)
,当我需要为函数提供不区分大小写的比较器时,我通过StringComparer.CurrentCultureIgnoreCase
.
请参阅http://msdn.microsoft.com/en-us/library/t0k7484c(v=vs.100).aspx
Option(Explicit|Strict|Compare|Infer) 是让编译器知道在将 VB.NET 代码转换为可执行文件时要设置哪些标志(它们确定编译器如何解释您尝试对代码执行的操作,例如 Option Compare 切换文本(不区分大小写)或二进制(区分大小写)比较字符串操作)。它们与 .NET Framework 构造没有任何关系,并定义了 VB.NET 代码应如何被其他 .NET 语言(如 C# 或 F#)解释。