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