这可能不明智, 但我正在研究一种情况,如果方法的返回值未被使用,我希望它是一个编译错误。
具体来说,Unity3D实现了如下所示的协同程序:
IEnumerator myCoroutine() {... yield break;}
如果你调用myCoroutine()
并且对返回的值不做任何操作(例如,你像普通方法一样调用它,而不是从另一个yield子句或通过StartCoroutine()方法调用它),结果是myCoroutine()内的所有代码都没有执行。 然而,没有编译或运行时警告。我希望在这种情况下遇到编译时错误。
我想到的一种方法是将IEnumerator子类化为MyIEnumerator,它添加了必须以某种方式传递的属性 - 分配给L值或传递给方法等。
但我还没有发现是否存在这样的要求。
答案 0 :(得分:3)
C#中没有这样的功能。您需要创建某种形式的第三方代码分析工具,以尝试查找这些案例。