我有string
s
string [] cargs
我希望从k
索引开始迭代它。是否有替代
var iter = cargs.GetEnumerator();
for (int i = 0; i <= k; ++i) iter.MoveNext();
???
此外,我正在尝试找出上述代码段中的iter
类型。当我在Visual Studio中将鼠标悬停在它上面时,我被告知类型为System.Collections.IEnumerator
,但我将行更改为
IEnumerator iter = cargs.GetEnumerator();
VS告诉我Using the generic System.Collections.Generic.IEnumerator<T> requires 1 type arguments
。我接着试过了
IEnumerator<string> iter = cargs.GetEnumerator();
和
IEnumerator<string[]> iter = cargs.GetEnumerator();
那么...... cargs.GetEnumerator()
是什么类型的,真的吗?
答案 0 :(得分:9)
除非您编写的自定义枚举方法可以通过手动迭代实现,否则不要手动迭代。
首选[{3}}或现有的枚举方法(例如foreach
)。
您可以使用阵列上的LINQ扩展方法(或任何其他IEnumerable<T>
)从任何索引开始,但在某些序列中,术语 index 不适用)。
每个Skip(int)
都有GetEnumerator()
方法,返回IEnumerable<T>
。
但是,每个IEnumerable<T>
也是(非通用)IEnumerator<T>
,其GetEnumerator()
方法返回(非通用)IEnumerable
。
首选通用接口,因为非泛型接口主要是遗留接口(从类型系统不支持泛型类型的早期版本开始)。
答案 1 :(得分:0)
仅供参考
bootstrap-responsive.css