C#方法中多个丢弃变量的正确格式是什么?

6
我有一个方法,由外部API调用,该API希望该方法具有这些特定参数。
        public static bool DoSomething(
            int x,
            int y
        ) =>
            true;

Roslyn 代码分析会报告一个 IDE0060 消息,如此处所述 (链接)

具体消息如下:

Warning IDE0060 Remove unused parameter 'y' if it is not part of a shipped public API

我将 'x' 替换为 '_'

'y' 应该替换为什么?

__(双下划线)--编译器会抱怨没有使用 __(和 IDE0060 消息相同)

_(单下划线)--编译器会抱怨参数名 _ 是重复的(CS0100 错误)

_1 (下划线后面跟一个数字)--编译器会抱怨 _1 是未使用的参数(RCS1163 消息)


1
我认为这个警告应该被忽略/抑制,至少在这种情况下是如此。参数名称是公共元数据的一部分。如果你有理由使用它们并将它们称为“x”和“y”(沿用多个类中的模式,以供未来使用等),那么以这种方式混淆它们是没有意义的(特别是如果它是为未来使用而设计的,当你真正实现它时,传递错误/占位符值将会突然破坏代码)。我理解Roslyn团队在此处所考虑到的问题,但它往往是不明智的主观看法。 - madreflection
事实上,直到最近使用两个_参数是不起作用的。但现在它可以工作了:https://learn.microsoft.com/en-us/dotnet/csharp/fundamentals/functional/discards - Alex Fainshtein
1个回答

8

看起来roslyn analyzer和roslynator analyzer之间存在意见分歧

roslyn - _1是正确的废弃参数格式

roslynator - __是正确的废弃参数格式

目前,

  • 选择roslyn格式,
  • 抑制roslynator消息,
  • 在roslynator存储库中创建了一个问题(# 770)

1
Roslynator仓库已经解决了这个问题 - 等待下一个版本发布。 - James Bradt

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接