我有一个应用程序在完成页面获取时,从名为“SecretNumber”的类中实例化一个对象。之后,我想使用实例化的对象,而不是实例化一个新对象。
下面是代码隐藏文件中的一段代码,问题是我无法在按钮功能中使用对象引用。我收到一个错误,告诉当前上下文中该名称不存在。
如何解决这个问题?提前谢谢!
public partial class _Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e) {
SecretNumber guessNr = new SecretNumber();
}
protected void btnCheckNr_Click(object sender, EventArgs e) {
if (!Page.IsValid) {
return;
}
else {
var guessedNr = int.Parse(inputBox.Text);
var result = guessNr.MakeGuess(guessedNr); <- The name 'guessNr' does not exist in the current context
}
}
}
答案 0 :(得分:1)
将变量的声明移出方法范围,因此它变为_Default
类型的私有字段。
这将起作用
public partial class _Default : System.Web.UI.Page
{
private SecretNumber guessNr;
protected void Page_Load(object sender, EventArgs e) {
guessNr = new SecretNumber();
}
protected void btnCheckNr_Click(object sender, EventArgs e) {
if (!Page.IsValid) {
return;
}
else {
var guessedNr = int.Parse(inputBox.Text);
var result = guessNr.MakeGuess(guessedNr); <- The name 'guessNr' does not exist in the current context
}
}
}
答案 1 :(得分:0)
SecretNumber guessNr = new SecretNumber();
实际上并没有做任何事情。你需要:
public partial class _Default : System.Web.UI.Page
{
private SecretNumber guessNr;
protected void Page_Load(object sender, EventArgs e) {
this.guessNr = new SecretNumber();
}
protected void btnCheckNr_Click(object sender, EventArgs e) {
if (!Page.IsValid) {
return;
}
else {
var guessedNr = int.Parse(inputBox.Text);
var result = this.guessNr.MakeGuess(guessedNr);
// Now use result
}
}
}
答案 2 :(得分:0)
如果您要guessNr
访问Page_Load
,请将btnCheckNr
置于SecretNumber guessNr;
之外。
Page_Load
然后在{{1}}方法中分配。
答案 3 :(得分:-1)
我假设您需要阅读有关C#(字段,方法,事件)中的类的一些基本信息。这不是ASP.NET问题,因为ASP.NET在OOP方面遵循与任何其他.NET技术完全相同的范例。
显然,您需要在此处使用SecretNumber
类型的字段