ASP.NET - 静态变量&状态机 - 一个用户会影响另一个吗?

我使用
yield
语句在C#中实现了一些功能,函数返回IEnumerable。 我的问题是,如果这个函数是静态类中的静态函数,它是否隐式地将任何东西作为一个状态机保存,它会影响多个用户,或者迭代器是否保存与状态相关的所有内容? (静态成员是应用程序范围。)     
已邀请:
不,不是的。创建的
IEnumerable<T>
将是一个不包含其他静态数据的类型。它可以引用静态信息,但前提是您在迭代器中显式访问它 例如。
public static class Utils {
  public static IEnumerable<int> Range(int start, int count) {
    for (var i = start; i <= count; i++) {
      yield return i;
    }
  }
}
粗略地翻译成
public static class Utils {
  private class RangeIterator : IEnumerable<int>, IEnumerator<int> {
    ... 
    // iterator state machine
  }
  public static IEnumerable<int> Range(int start, int count) {
    return new RangeIterator(start, count);
  }
}
    

要回复问题请先登录注册