Он меня или List< T>.Foreach, в значительной степени сделанный устаревшим Linq. Первоначально был
foreach(X x in Y)
, где Y просто должен был быть IEnumerable (Пред 2,0) и реализовать GetEnumerator (). Если Вы смотрите на MSIL, генерировал Вас, видят, что это - точно то же как
IEnumerator enumerator = list.GetEnumerator();
while (enumerator.MoveNext())
{
int i = enumerator.Current;
Console.WriteLine(i);
}
(См. http://alski.net/post/0a-for-foreach-forFirst-forLast0a-0a-.aspx для MSIL)
Тогда в Дженериках DotNet2.0 пришел и Список. Foreach всегда чувствовал мне, чтобы быть реализацией шаблона Vistor, (см. Шаблоны разработки Гаммой, Рулем, Johnson, Vlissides).
Теперь, конечно, в 3,5 мы можем вместо этого использовать Лямбду для того же эффекта для попытки в качестве примера http://dotnet-developments.blogs.techtarget.com/2008/09/02/iterators-lambda-and-linq-oh-my/
Assuming you did not commit the file, or add it to the index, then:
git checkout -- filename
Assuming you added it to the index, but did not commit it, then:
git reset HEAD filename
git checkout -- filename
Assuming you did commit it, then:
git checkout origin/master filename
Assuming you want to blow away all commits from your branch (VERY DESTRUCTIVE):
git reset --hard origin/master