Проект веб-форм ASP.NET 4.0. В моем коде -есть следующее.
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
, если я быстро просматриваю переменную экземпляра, она также имеет значение «тест». Когда я играю до Page_Load
, значение переменной экземпляра равно null
.
Я наткнулся на это случайно, но поведение меня сбивает с толку. Я на самом деле удивлен, что он компилируется. Я ожидал увидеть какое-то предупреждение о наличии двух переменных с одинаковыми именами. При этом меня еще больше сбивает с толку то, что переменная экземпляра получает назначение в OnInit, но затем сразу же теряет его при выходе из этого метода.
Кто-нибудь может объяснить мне такое поведение?