ローカル関数は親メソッドの変数を共有できます。
親メソッドは複数のローカルメソッドから共有されますから、必然的に親メソッドの変数は複数のローカル関数から共有できます。
罠の数々 §
- この機能はスローダウンの要因になるので、ローカル関数にstaticキーワードを付けて変数を共有しないことを明示的に宣言できる
参考リンク §
ローカル関数 (C# プログラミング ガイド)
ローカル関数は、メソッドの内部以外のどこに記述できるか上記のリンクから辿って確認しておこう。ローカル関数を書ける場所はメソッドの内部だけではないのだ。
リポジトリ §
https://github.com/autumn009/cshowto
Capture §
using System;
class Program
{
static void Main()
{
var a = 0;
sub1();
sub2();
void sub1()
{
a = 1234;
}
void sub2()
{
Console.WriteLine(a);
}
}
}
実行結果
1234