Heim  >  Artikel  >  Backend-Entwicklung  >  Erfahren Sie mehr über den Unterschied zwischen for-Schleife und foreach

Erfahren Sie mehr über den Unterschied zwischen for-Schleife und foreach

迷茫
迷茫Original
2017-03-26 10:37:151545Durchsuche

Der Unterschied zwischen for-Schleife und foreach

foreach basiert auf IEnumerable.

Wenn var a in GetList() zum ersten Mal aufgerufen wird, wird GetEnumerator aufgerufen, um das erste Objekt zurückzugeben und es zuzuweisen zu a,

MoveNext wird jedes Mal aufgerufen, wenn var a in GetList() ausgeführt wird

Die GetList()-Methode wird nur einmal ausgeführt

foreach   (var a in GetList())
{
    ...
}

=

var a;
IEnumerator  e  =  GetList().GetEnumerator();
while (e.MoveNext)
{
    a = e.Current;
}

for-Schleife basiert auf der tiefgestellten Positionierung. List[3] entspricht *(list + 3).

for(int i = 0; i < GetCount(); i++)
{
  ....
}

=

int i = 0;

while(i < GetCount())
{
  ...
}

Die for-Schleife ruft GetCount() auf, um die Länge zu vergleichen Bei jeder Schleife berücksichtigt foreach die Länge nicht und ruft GetList nur einmal auf ().

Fazit.

Die for-Schleife ist effizienter als foreach, wenn die Länge festgelegt ist Die Länge muss nicht berechnet werden.

Es hat eine Leistung, wenn die Länge unsicher ist oder die Länge berechnet wird. Bei der Erschöpfung ist es bequemer, foreach zu verwenden.

Und die Objekte in Die Sammlung wird während foreach gesperrt. Sie können während des Zeitraums nicht geändert werden.

Das obige ist der detaillierte Inhalt vonErfahren Sie mehr über den Unterschied zwischen for-Schleife und foreach. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn