当前位置:  开发笔记 > 编程语言 > 正文

C#编译器增强建议

如何解决《C#编译器增强建议》经验,为你挑选了2个好方法。

想象一下有人编写以下代码:

string s = "SomeString";
s.ToUpper();

我们都知道在上面的例子中,对"ToUpper()"方法的调用没有意义,因为根本不处理返回的字符串.但是,很多人犯了这个错误,花时间试图解决问题所在,问自己"为什么不是我的'变量上的字符大写"?

因此,如果有一个属性可以应用于"ToUpper()"方法,如果不处理返回对象会产生编译器错误,那么这不是很好吗?类似于以下内容:

[MustHandleReturnValueAttribute]
public string ToUpper()
{
…
}

如果要正确编译此代码,则用户必须处理返回值,如下所示:

string s = "SomeString";
string uppers = s.ToUpper();

我认为这将清楚地表明你必须处理返回值,否则调用该函数是没有意义的.

在字符串示例的情况下,这可能不是什么大问题,但我可以想到其他更合理的原因,为什么这会派上用场.

你们有什么感想?

谢谢.



1> Brian..:

是否会为其副作用,返回值或两者调用方法?"纯粹"函数(没有任何影响,仅用于计算返回值)将很好地进行注释,既可以消除您描述的错误类型,也可以实现一些潜在的优化/分析.也许再过5年我们就会看到这种情况发生.

(请注意,只要您隐式忽略返回值,F#编译器就会发出警告.当您想要显式忽略它时,可以使用'ignore'函数.)



2> Dean..:

如果您有Resharper,它将为您突出显示此类内容.不能推荐resharper足够高,它有很多有用的IDE添加,特别是在重构.

http://www.jetbrains.com/resharper/

推荐阅读
手机用户2402852387
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有