Go had the same behavior until recently. Closures captures the variable from the for loop and it was a reference to the value.
They changed it because it’s “common” in Go to loop over something and run a goroutine that uses the variable defined in the loop. Workaround was to either shadow the variable with itself before the loop, or to pass the value as an argument.
It’s been a long time since I wrote c# so idk if the same is expected from the avg dev, but in Go it’s really not explicit that the variable will be a reference instead of a plain value
i is still a value type, that never changes. Which highlights another issue I have with the explanation as provided. Using the word “reference” in a confusing way. Anonymous methods capture their enclosing scope, so i simply remains in-scope for all calls to those functions, and all those functions share the same enclosing scope. It never changes from being a value type.
You are not logged in. However you can subscribe from another Fediverse account, for example Lemmy or Mastodon. To do this, paste the following into the search field of your instance: !programmerhumor@lemmy.ml
Post funny things about programming here! (Or just rant about your favourite programming language.)
Rules:
Posts must be relevant to programming, programmers, or computer science.
No NSFW content.
Jokes must be in good taste. No hate speech, bigotry, etc.
Go had the same behavior until recently. Closures captures the variable from the for loop and it was a reference to the value.
They changed it because it’s “common” in Go to loop over something and run a goroutine that uses the variable defined in the loop. Workaround was to either shadow the variable with itself before the loop, or to pass the value as an argument.
It’s been a long time since I wrote c# so idk if the same is expected from the avg dev, but in Go it’s really not explicit that the variable will be a reference instead of a plain value
i
is still a value type, that never changes. Which highlights another issue I have with the explanation as provided. Using the word “reference” in a confusing way. Anonymous methods capture their enclosing scope, soi
simply remains in-scope for all calls to those functions, and all those functions share the same enclosing scope. It never changes from being a value type.