Memory Allocation in foreach loop

Hi all,

had a dispute with colleague about foreach syntax. In following example I use a methode to return a [color=Blue]new[/color] Collection of strings and I believe collection is only created once: --> when loop variables are initialized. My colleague is convinced the collection is [color=Blue]newed[/color] each time the loop loops. Who is right??

foreach( string s in ListDefaults.ListNames( base.mProj.StringMan, base.mProj.LicensedModules ))
cmbBoxListType.Items.Add( s );

greets C:


  • Hi,

    I'm almsot certain you are right - the collection will be obtained first and then an iterator taken. So only one collection is created and then looped over. If you compile a simple example program and then disassemble it to IL code, it'll probably clear up what is really going on.

    (tr/yuiqwert/her anot/))for($::b);for($::c){$_.=$^X;
    /(p.{2}l)/;$_=$1}$::b=~/(..)$/;print("$::a$::b $::c hack$1.");
Sign In or Register to comment.

Howdy, Stranger!

It looks like you're new here. If you want to get involved, click one of these buttons!


In this Discussion