linqを使用している設定メンバーが動作していないように見えた問題に遭遇しました。だから例を示すためにこの非常に特殊なコードを作った。LINQ ForEachがメンバーを設定していない
なぜSomeClassインスタンスのメンバーが最初のForEachに設定されていないのですか?
using System;
using System.Linq;
public class Program
{
class SomeClass
{
public float val = 0f;
}
public static void Main()
{
var arr = Enumerable.Range(0, 1).Select(x => new SomeClass());
arr.ToList().ForEach(x => x.val = 2f);
// Outputs 0
Console.WriteLine(arr.Select(x => x.val).First());
var list = arr.ToList();
list.ForEach(x => x.val = 2f);
// Outputs 2
Console.WriteLine(list.Select(x => x.val).First());
}
}
https://dotnetfiddle.net/j0oLUh
理由だけではなく 'Enumerable.Range(0、1).Select(X =>新しい工ass {ヴァル= 2F});'? –
このテストはそれだけで愚かです。それは私が遭遇した問題を示しています。 – quano