gpt4 book ai didi

c# - C#和VB.Net字符串比较的区别

转载 作者:太空狗 更新时间:2023-10-30 00:03:18 26 4
gpt4 key购买 nike

我实际上是在尝试回答 this question但由于这非常复杂并且不太可能很快得到良好的响应,所以我将尝试自己制定实现方案。根本问题似乎是我所遵循的 C# 示例没有直接转换为 VB。

检查字符串比较时 BinaryExpression在 lambda 中,VB 报告 Expression.Method.DeclaringType成为Microsoft.VisualBasic.CompilerServices.Operators方法名称为 CompareString .这显然是特定于 VB 的。

表达式只是比较x.Content_Type <> ""并在其上调用 ToString 返回 {(CompareString(x.Content_Type, "", False) != 0)} - 这看起来很合乎逻辑(CompareString docs here)。

谁能向我解释一下 VB 和 C# 如何(或者更好,为什么)以不同方式处理字符串比较。

我想如果我能得到这个问题的答案,我应该能够找到另一个问题的解决方案。

编辑:为了澄清,我正在实现一个自定义 LINQ 提供程序,它正在检查以下 Where调用:

Query.Where(function(x) x.Content_Type <> "")

或 C# 等效...

query.Where(x=>x.Content_Type!="");

据我所知,两者在功能上应该是相同的

最佳答案

VB.NET 从以前版本的 Visual Basic 中继承了 Option Compare 语句。为了实现这一点,VB.NET 中的所有字符串比较表达式都被翻译成一个辅助函数,该函数可以找出在编写该语句的特定源代码文件中所选的选项比较值是什么。

Operators.CompareString(string, string, bool) 方法就是辅助函数。最后一个参数名为“TextCompare”,如果 Option Compare Text 生效,VB.NET 编译器自动传递 True,如果 Option Compare Binary 生效,则传递 False。

C# 没有这样的东西。

关于c# - C#和VB.Net字符串比较的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12197569/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com