【发布时间】:2021-05-22 04:45:38
【问题描述】:
来自 .NET 4 的 ASP.NET 5 MVC 项目使用 Substring 是类似源代码
id = row.Categoryid?.Substring(0, 1) == "$" ? row.Categoryid?.Substring(startIndex: 1) :
row.Categoryid?.Substring(0)
Visual Studio 2019 质检员抛出消息
IDE0057 子串可以简化
在
开始索引:1
应用建议的修复后
使用范围运算符
代码重构为
id = row.Categoryid?.Substring(0, 1) == "$" ? row.Categoryid?.Substring[1..] :
row.Categoryid?.Substring(0)
引发编译错误
错误 CS0021 无法将带有 [] 的索引应用于类型表达式 '方法组'
如何解决这个问题,以便重构创建正确的代码?
【问题讨论】:
-
不修复编译错误,但你不能这样做:
id = row.Categoryid.Trim('$')或者特别是开始var id = row.Categoryid.TrimStart('$') -
这听起来像一个错误。您可以直接通过github.com/dotnet/roslyn/issues/… 向 Roslyn 举报,以便修复。
-
项目文件中
TargetFramework和LangVersion属性的值是多少?是否指定了其中一个或两个? -
项目文件包含
<TargetFramework>net5.0</TargetFramework>未指定LangVersion -
我现在看到@00110001 的编辑说明这是一个已修复的known bug。这就是为什么它不会在我的本地构建中复制的原因。所以,你应该很快就会有一个修复版本。
标签: c# visual-studio asp.net-core asp.net-core-mvc roslyn-code-analysis