ASP.NET 4.0 Web フォーム プロジェクト。コードビハインドには次のものがあります。
public partial class _Default : System.Web.UI.Page
{
private string testVar;
protected override void OnInit(EventArgs e)
{
string testVar = "test";
}
protected void Page_Load(object sender, EventArgs e)
{
var whatsTheValue = testVar;
}
}
各メソッド内にブレークポイントを設定しています。ローカル変数testVar
が に設定されてOnInit
いる場合、インスタンス変数をざっと見てみると、値も「test」になっています。まで再生するとPage_Load
、インスタンス変数の値はnull
です。
偶然これに出くわしましたが、動作がわかりにくいです。私は実際にそれがコンパイルされることに驚いています。同じ名前の 2 つの変数があることについて、何らかの警告が表示されることを期待していました。そうは言っても、インスタンス変数が OnInit で割り当てを取得し、そのメソッドが終了するとすぐにそれを失うことは、私にとってさらに混乱を招きます。
誰かが私にこの振る舞いを説明できますか?