如何在C#中避免或检测隐式委托推理?

前端之家收集整理的这篇文章主要介绍了如何在C#中避免或检测隐式委托推理?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在使用C#编写游戏,并且发现了一些函数需要委托的情况,我无意中传递了一个函数名,而不是创建和缓存委托以用作参数.这会导致为每个对这些函数调用创建一个委托对象,然后在函数返回时立即变为垃圾.

我想找到我犯了这个错误的所有地方,我宁愿避免阅读每个文件的每一行寻找它们(有多年的代码值).我看到VB有一个’选项严格’会禁用隐式构造的对象,如果C#有这个功能,我觉得这对我有用,但我认为不行.我还审查了编译器警告选项,它们似乎都没有帮助.

是否有任何合理方便的方法来识别由隐式委托推理创建的这些对象,以便我可以找到我需要创建/缓存回调以避免垃圾的位置?

解决方法

简而言之,您的问题是“如何找到所有方法组转换?”

我们目前正在开发一个代号为Roslyn的项目,它允许您使用C#编译器和IDE使用的相同语义分析引擎.它将公开语言的语法模型,然后提供语义分析API,通过它您可以提出语义分析器的问题.

使用Roslyn,您可以将所有代码编译为语法树,然后搜索每个表达式的语法树.将有一个API,允许您确定表达式是否转换为任何内容,如果是,转换分析器如何对转换进行分类.

我们目前处于“社区技术预览”阶段;我们有一个初步的实施,但它还没有完全功能.我不记得方法组转换分析器是否在CTP版本中实现.

试一试,如果您对此有任何反馈,我们很乐意听取您对Roslyn论坛的看法.

详细信息:

http://msdn.microsoft.com/en-us/roslyn

猜你在找的C#相关文章