我正在使用C#编写游戏,并且发现了一些函数需要委托的情况,我无意中传递了一个函数名,而不是创建和缓存委托以用作参数.这会导致为每个对这些函数的调用创建一个委托对象,然后在函数返回时立即变为垃圾.
我想找到我犯了这个错误的所有地方,我宁愿避免阅读每个文件的每一行寻找它们(有多年的代码值).我看到VB有一个’选项严格’会禁用隐式构造的对象,如果C#有这个功能,我觉得这对我有用,但我认为不行.我还审查了编译器警告选项,它们似乎都没有帮助.
解决方法
简而言之,您的问题是“如何找到所有方法组转换?”
我们目前正在开发一个代号为Roslyn的项目,它允许您使用C#编译器和IDE使用的相同语义分析引擎.它将公开语言的语法模型,然后提供语义分析API,通过它您可以提出语义分析器的问题.
使用Roslyn,您可以将所有代码编译为语法树,然后搜索每个表达式的语法树.将有一个API,允许您确定表达式是否转换为任何内容,如果是,转换分析器如何对转换进行分类.
我们目前处于“社区技术预览”阶段;我们有一个初步的实施,但它还没有完全功能.我不记得方法组转换分析器是否在CTP版本中实现.
试一试,如果您对此有任何反馈,我们很乐意听取您对Roslyn论坛的看法.
详细信息: