C# - 要求将返回的类型分配给L值吗?

时间:2016-10-07 18:17:39

标签: c# unity3d lvalue ienumerator

这可能不明智, 但我正在研究一种情况,如果方法的返回值未被使用,我希望它是一个编译错误。

具体来说,Unity3D实现了如下所示的协同程序:

IEnumerator myCoroutine() {...  yield break;}

如果你调用myCoroutine()并且对返回的值不做任何操作(例如,你像普通方法一样调用它,而不是从另一个yield子句或通过StartCoroutine()方法调用它),结果是myCoroutine()内的所有代码都没有执行。 然而,没有编译或运行时警告。我希望在这种情况下遇到编译时错误。

我想到的一种方法是将IEnumerator子类化为MyIEnumerator,它添加了必须以某种方式传递的属性 - 分配给L值或传递给方法等。

但我还没有发现是否存在这样的要求。

1 个答案:

答案 0 :(得分:3)

C#中没有这样的功能。您需要创建某种形式的第三方代码分析工具,以尝试查找这些案例。