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

C# - require a returned type to be assigned to an L-Value?

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

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

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

如果您调用 myCoroutine() 并且对 returned 值不执行任何操作(例如,您像普通方法一样调用它,而不是从另一个 yield 子句内部或通过 StartCoroutine()方法),结果是myCoroutine()里面的所有代码都没有执行。 但是,没有编译或运行时警告。我想在这种情况下出现编译时错误。

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

但我无法发现是否存在这样的要求。

C# 中没有此功能。您需要创建某种形式的第 3 方代码分析工具来尝试寻找此类案例。