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
,如果我快速查看实例变量,它也有值“test”。当我玩到 时Page_Load
,实例变量的值为null
。
我偶然遇到了这个,但这种行为让我感到困惑。我真的很惊讶它可以编译。我本来希望看到一些关于有两个同名变量的警告。话虽如此,让我更加困惑的是,实例变量在 OnInit 中获取了赋值,但在退出该方法时立即丢失了它。
有人可以向我解释这种行为吗?