Problem understanding "foreach"

I am making a pathfinding script for my AI but i need to understand something about the foreach loop because i think it is causing my script to cause problems.
I want to know if the return is activated after the for loop has searched all of the tiles or does it return after each iteration of the loop?

foreach(Tile tile in AllTiles){

    closestTile = tile;

return closestTile;

And here is my actual script:

Tile GetTileValues(){

		float minFvalue = Mathf.Infinity;
		Tile candidate = null;

		foreach(Tile t in open){

			//return abs(toCoord.x - fromCoord.x) + abs(toCoord.y - fromCoord.y);
			float hValue = 	Mathf.Abs(endTile.transform.position.x -
			                       t.transform.position.x +
			             	Mathf.Abs(endTile.transform.position.y - 

			float gValue = 	Mathf.Abs(startTile.transform.position.x -
			                        t.transform.position.x +
			                Mathf.Abs(startTile.transform.position.y - 

			float fValue = gValue + hValue;

			if(fValue < minFvalue){

				minFvalue = fValue;
				candidate = t;




		return candidate;


of cause your “return closestTile;” will execute only after “foreach” loop have processed all elements in “AllTiles”.

Only “yield return” could interrupt loop’s execution after each iteration, but this very different case.