JetBrains Rider 2025.2 Help

代码检查:参数输出值始终被丢弃(私有可访问性)

C# 6.0 的 "out var" 大大减少了使用带有 参数的方法所需的代码量——现在我们几乎总是内联声明变量,并且经常使用类型推断来省略变量类型: dictionary.TryGetValue(key, out var value)。

C# 6.0 改进了 参数的另一个方面,即能够使用 M(out _)M(out var _) 语法忽略我们不需要的输出参数值。 因此,在现代 C# 代码库中,像 DoSomething(arg, out _, out _) 这样的调用并不少见。

JetBrains Rider 分析了此类调用,并报告在所有调用点被丢弃的 参数。 这有助于识别始终被丢弃的值的潜在问题,并通过移除未使用的参数简化签名。

class Test { private Dictionary<string, int> _set = new(); // Parameter 'value' output value is always discarded private bool HasKey(string key, out int value) { return _set.TryGetValue(key, out value); } private void Usage(SetOfThings set) { if (set.HasKey("abc", out _)) Console.WriteLine("do something"); } }
class Test { private Dictionary<string, int> _set = new(); private bool HasKey(string key) { int value; return _set.TryGetValue(key, out value); } private void Usage(SetOfThings set) { if (set.HasKey("abc")) Console.WriteLine("do something"); } }
最后修改日期: 2025年 9月 26日