Không. Đối tượng được trả về bởi Split (có thể là một mảng, nhưng cùng áp dụng cho các đối tượng khác) là những gì định nghĩa vòng lặp sau khi tất cả. Nếu nó có số không hoặc một triệu mục, đó là nó xác định số không hoặc hàng triệu lần lặp lại, mà nó không thể thực hiện nếu nó vẫn được gọi.
Đối với một chi tiết chút, mã sản xuất trở nên tương đương với:
string[] temp = installerEmails.Split(',');
var enumerator = temp.GetEnumerator();
try
{
while(enumerator.MoveNext())
{
string email = (string)enumerator.Current;
Console.WriteLine(email);
}
}
finally
{
if(enumerator is IDisposable)
((IDisposable)enumerator).Dispose()
}
Như bạn thấy, .Split()
được gọi là chỉ một lần.
Nguồn
2010-10-14 14:50:52
+1: câu hỏi hay –
bản sao có thể có của [Cách thức hoạt động của foreach khi lặp qua kết quả hàm?] (Http://stackoverflow.com/questions/1632810/how-does-foreach-work-when-looping-through -function-results) –