Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/295.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在C#中是否可以在特定索引处启动迭代器?_C#_Data Structures - Fatal编程技术网

在C#中是否可以在特定索引处启动迭代器?

在C#中是否可以在特定索引处启动迭代器?,c#,data-structures,C#,Data Structures,我有一个strings的箭头 string [] cargs 我想从kth索引开始迭代它。有没有替代的方法 var iter = cargs.GetEnumerator(); for (int i = 0; i <= k; ++i) iter.MoveNext(); VS告诉我使用泛型System.Collections.generic.IEnumerator需要1个类型参数。我试过了 IEnumerator<string> iter = cargs.GetEnumer

我有一个
string
s的箭头

string [] cargs
我想从
k
th索引开始迭代它。有没有替代的方法

 var iter = cargs.GetEnumerator();
 for (int i = 0; i <= k; ++i) iter.MoveNext();
VS告诉我使用泛型System.Collections.generic.IEnumerator需要1个类型参数
。我试过了

IEnumerator<string> iter = cargs.GetEnumerator();
IEnumerator iter=cargs.GetEnumerator();

IEnumerator iter=cargs.GetEnumerator();

所以。。。什么类型是cargs.GetEnumerator()
,真的吗?

不要手动迭代,除非您正在编写一个自定义枚举方法,该方法将受益于使用手动迭代实现

首选或现有的枚举方法(如)


您可以使用数组上的扩展方法从任何索引开始(或任何其他
IEnumerable
,尽管在某些序列中术语索引不适用)


每个都有一个
GetEnumerator()
方法,该方法返回一个

但是,每个
IEnumerable
也是一个(非泛型),它有一个
GetEnumerator()
方法返回一个(非泛型)

首选泛型接口,因为非泛型接口主要是遗留的(从早期版本开始,当时类型系统不支持泛型类型)。

仅供参考

//This starts at 0
var k = 31;
var startAT = 0;
for (int i= startAT; i<= k; ++i) 
{
    Console.WriteLine(i);
}

-------------------------------

//here the start position is changed, you can change to what you like!
//this starts at 30 instead of 0
var k = 31;
var startAT = 30;
for (int i= startAT; i<= k; ++i) 
{
    Console.WriteLine(i);
}
//这从0开始
var k=31;
var startAT=0;

对于(int i=startAT;iLSO,单击
GetEnumerator
code并按F12,它将跳转到
System.Collections.IEnumerator
,简短的回答是“否”。
IEnumerator
/
IEnumerator
界面不提供跳过值的方法。必须使用类似于
.skip(5)的方法
提供跳过值的错觉。
IEnumerator<string[]> iter = cargs.GetEnumerator();
//This starts at 0
var k = 31;
var startAT = 0;
for (int i= startAT; i<= k; ++i) 
{
    Console.WriteLine(i);
}

-------------------------------

//here the start position is changed, you can change to what you like!
//this starts at 30 instead of 0
var k = 31;
var startAT = 30;
for (int i= startAT; i<= k; ++i) 
{
    Console.WriteLine(i);
}