配列は値型である整数であるため、次のスニペットは機能しない (配列項目は変更されない) と考えるのは正しいですか。
class Program
{
public static void Main()
{
int[] ints = new int[] { 1,2 };
Array.ForEach(ints, new Action<int>(AddTen));
// ints is not modified
}
static void AddTen(int i)
{
i+=10;
}
}
おそらく文字列が不変であるため、例で文字列の配列を使用した場合も同じことが当てはまります。
私が持っている質問は次のとおりです。
これを回避する方法はありますか?コールバック メソッドのシグネチャを変更することはできません。たとえば、ref キーワードを追加して、値の型をクラスでラップしたくありません。これは機能します...
(もちろん、昔ながらの foreach ループを記述してこれを行うこともできます!)