如何记住使用返回值?

que*_*en3 8 c#

有时我忘了,当我使用的返回值到.例如

var s = "foobar";
s.Replace("foo", "notfoo");
// correct: s = s.Replace("foo", "notfoo");
Run Code Online (Sandbox Code Playgroud)

这也适用于我的自定义类值类,例如,我使用流体x.WithSomething()方法返回新值对象而不是修改x.

一种解决方案是使用单元测试.但是,这并不总是适用.那么,当不使用返回值时,如何强制编译器 - 或者至少是运行时错误?

也许,有一个ReSharper或VS解决方案?

更新:好的,它不是由语言强制执行的.所以null参数是,但如果参数为null,我仍然可以抛出异常.ReSharper可以向我发出很多关于C#未强制执行的事情的警告.但我认为没有办法对未使用的返回值做同样的事情 - 对于那些我想要使用的返回值.

如果不是系统函数(比如string.Replace),但至少对于我自己的类 - 有什么办法吗?比如,返回RequiredReturn <T>或类似的东西.

更新:AOP/PostSharp怎么样?如果我使用[UsageRequired]标记返回值或方法,是否可以使用PostSharp以某种方式检测到使用了返回值?

(注意C#标签)

Nic*_*oiu 0

您是否考虑过使用 FxCop(或 Visual Studio Code Analysis,如果有的话)来实现此目的?它包括一个规则,用于筛选某些预定义方法类别的返回值的使用。如果规则没有发现您的遗漏,您可以创建一个自定义规则来检查它们。(内置规则将捕获示例中的 String.Replace 问题。)