我想在ref结构方法中使用yield
:
public ref struct RefStruct
{
public IEnumerator<int> GetEnumerator()
{
yield return 1;
}
}
编译器抱怨错误:
CS4013不能在嵌套函数,查询表达式,迭代器块或异步方法内使用类型为“Refstruct”的实例
但在迭代器块中不使用refstruct
实例。
我可以假设对于ref结构,yield
转换规则没有改变。 与类一样,具有yield
的方法被转换为GetEnumerator
类,该类具有存储ref结构实例的字段。 这是不正确的,因为类字段不能是ref struct。 但在这种情况下,编译器必须抱怨另一个错误。
这是一个bug还是我做错了什么?
我不知道是怎么回事,但是在玩了一圈之后我发现下面的工作在周围,也许它是有用的
public ref struct RefStruct
{
public IEnumerator<int> GetEnumerator()
{
return Foo();
IEnumerator<int> Foo()
{
yield return 1;
}
}
}