D - foreach gotchas
- J Anderson (12/12) Dec 18 2003 With the for each val is always a copy, which means code like below is
- Patrick Down (7/26) Dec 18 2003 You can do it with inout
- J Anderson (2/35) Dec 18 2003
With the for each val is always a copy, which means code like below is incorrect. int [] array; foreach (int i, int val; array) { val = 10; } I think in foreach val should be a reference. What's worse, is if you iterate through an array of structs with foreach. In these cases there probably is a performance hit due to the copy. -Anderson
Dec 18 2003
You can do it with inout J Anderson <REMOVEanderson badmama.com.au> wrote in news:brsd95$9iu$1 digitaldaemon.com:With the for each val is always a copy, which means code like below is incorrect. int [] array; foreach (int i, int val; array) { val = 10; }foreach (inout int i, int val; array) { val = 10; }I think in foreach val should be a reference. What's worse, is if you iterate through an array of structs with foreach. In these cases there probably is a performance hit due to the copy. -Anderson
Dec 18 2003
Patrick Down wrote:You can do it with inoutThanks.J Anderson <REMOVEanderson badmama.com.au> wrote in news:brsd95$9iu$1 digitaldaemon.com:With the for each val is always a copy, which means code like below is incorrect. int [] array; foreach (int i, int val; array) { val = 10; }foreach (inout int i, int val; array) { val = 10; }I think in foreach val should be a reference. What's worse, is if you iterate through an array of structs with foreach. In these cases there probably is a performance hit due to the copy. -Anderson
Dec 18 2003