我有一个数组列表如下;
ArrayList myArrayList = new ArrayList();
for (int i = 0; i <= 1000; i++)
{
myArrayList.Add(i.ToString());
}
然后我使用IEnumerator并尝试将值传递给函数。
IEnumerator eee = myArrayList.GetEnumerator();
现在调用该函数。
iteratefrom5to10(eee); //The error shown here is some invalid arguments.
static void iteratefrom5to10(IEnumerator<int> ien)
{
while (ien.MoveNext())
{
MessageBox.Show(ien.Current.ToString());
}
}
上述方法适用于List。但不是ArrayList。有什么问题?
答案 0 :(得分:3)
停止使用ArrayList
- 很少有您想要使用它的情况。
由于您正在使用整数列表,因此只需使用List<int>
- 无需将所有值转换为字符串并返回:)
最后,为什么你还在使用GetEnumerator
?将参数更改为IEnumerable<int>
,将while
更改为foreach
:
var list = new List<int>();
for (var i = 0; i <= 1000; i++)
{
list.Add(i);
}
static void iteratefrom5to10(IEnumerable<int> ien)
{
foreach (var value in ien)
{
MessageBox.Show(value.ToString());
}
}
IEnumerable
非常容易使用。例如,由于您的方法名称建议您要从5到10进行迭代,因此可以使用简单的list.Skip(4).Take(6)
进行相同操作。
答案 1 :(得分:1)
您需要将[Test]
public void FileToEmailClient()
{
string testDataFilePath = @"..\..\Data\test.txt";
Assert.That(File.Exists(testDataFilePath), Is.True);
string subject = String.Format("File {0} attached", Path.GetFileName(testDataFilePath));
string body = "body";
string command = String.Format("mailto:?subject={0}&body={1}&attachment=\"{2}\"", subject, body, testDataFilePath);
Process.Start(command);
}
投射到myArrayList
,如下所示:
IEnumerable<int>
请注意,您要向IEnumerator<int> eee = myArrayList.Cast<int>().GetEnumerator();
添加字符串。你应该像这样添加整数:
ArrayList
答案 2 :(得分:0)
你可以这样做:
myArrayList.ToArray().AsEnumerable();