VB -> C#: `= ""` should not be converted to `string.IsNullOrEmpty` when `Option Compare Text`
还没有人认领这个 Issue。
评估
调研方向
首先跟踪转换器在使用 Option Compare Text 时如何处理 VB 字符串相等比较,并使用提供的 VB 输入和错误的 C# 输出进行复现。添加一个回归用例,使其转换后的输出能够区分第一次比较和与 null 的比较,然后验证它生成预期的 Operators.CompareString 和 string.IsNullOrEmpty 调用。
由索引模型根据 Issue 内容生成。
描述
VB.Net input code
Option Compare Text
Imports System
Imports Microsoft.VisualBasic
Public Class VisualBasicClass
Public Shared Sub Main()
Dim s = ChrW(&H2060) & ChrW(&H2060)
Console.WriteLine(s = "")
Console.WriteLine(s = Nothing)
End Sub
End Class
True
False
Erroneous output
using Microsoft.VisualBasic; // Install-Package Microsoft.VisualBasic
using Microsoft.VisualBasic.CompilerServices; // Install-Package Microsoft.VisualBasic
public partial class VisualBasicClass
{
public static void Main()
{
string s = Conversions.ToString(Strings.ChrW(0x2060)) + Strings.ChrW(0x2060);
Console.WriteLine(string.IsNullOrEmpty(s));
Console.WriteLine(string.IsNullOrEmpty(s));
}
}
False
False
Expected output
using Microsoft.VisualBasic; // Install-Package Microsoft.VisualBasic
using Microsoft.VisualBasic.CompilerServices; // Install-Package Microsoft.VisualBasic
public partial class VisualBasicClass
{
public static void Main()
{
string s = Conversions.ToString(Strings.ChrW(0x2060)) + Strings.ChrW(0x2060);
Console.WriteLine(Operators.CompareString(s, "", true));
Console.WriteLine(string.IsNullOrEmpty(s));
}
}
Details
- Product in use: e.g. icsharpcode.github.io/CodeConverter
- Version in use: web
- Did you see it working in a previous version, which?alaaaaa
- Any other relevant information to the issue, or your interest in contributing a fix. Roslyn will never do this fix. https://github.com/dotnet/roslyn/issues/71835
Strings composed of invisible characters (e.g. U+2060 and IVS (e.g. U+E0100)) are treated as equivalent to the empty string by VB only when Option Compare Text.
they are always told from null.
- 主要语言
- C#
- 星标
- 916
- 派生
- 242
- PR 合并指标
- 30 天内没有已合并 PR
环境准备
- 没有 Dockerfile 或 Docker Compose 文件
- 有 Pull Request 模板
- 阅读贡献指南
从这里开始
- 先读完整个 Issue,再读项目的贡献指南。
- 在 Issue 下留言说明你要接手 —— 这能避免两个人做同样的事。
- Fork 仓库,在一个分支上完成修改。
- 提交 Pull Request,并在描述里引用这个 Issue 编号。
icsharpcode/CodeConverter 的其他 Issue
-
难度 2/5 1-3 小时 新手友好度 78/100
icsharpcode/CodeConverter#1271 · 1 条评论 ·
-
C# -> VB: most pattern matching fails to convert可能已有人在做 @gherards99 于 40 天前认领。 未关闭C# -> VB
难度 4/5 3-5 天 新手友好度 35/100
icsharpcode/CodeConverter#1281 ·
-
难度 3/5 1-2 天 新手友好度 55/100
icsharpcode/CodeConverter#1275 ·
-
VB -> C#: Handleres of sub properties being untracked可能已有人在做 @Igor-Tomasi 于 76 天前认领。 未关闭VB -> C#
难度 3/5 1-2 天 新手友好度 62/100
icsharpcode/CodeConverter#1273 ·
-
VB -> C#: "Group By Into" Linq queries supressing aggregations ("Into" part) in the converted code未关闭Difficult area VB -> C#
难度 3/5 1-2 天 新手友好度 74/100
icsharpcode/CodeConverter#1272 ·
查看 icsharpcode/CodeConverter 的全部 Issue
相似的 Issue
-
area-signalr
难度 2/5 1-3 小时 新手友好度 75/100
dotnet/aspnetcore#69842 · 1 条评论 ·
维护者通常 1 天内回复
-
难度 2/5 1-3 小时 新手友好度 75/100
维护者通常 1 天内回复
-
难度 2/5 1-3 小时 新手友好度 64/100
维护者通常 2 天内回复
-
bug needs-triage
难度 2/5 1 小时以内 新手友好度 78/100
microsoft/microsoft-ui-reactor#1373 ·
维护者通常 1 天内回复
-
Client customer-reported KeyVault needs-team-attention question Service Attention
难度 2/5 1-3 小时 新手友好度 62/100
Azure/azure-sdk-for-net#63861 · 3 条评论 · 1 个 reaction ·
维护者通常 1 天内回复