可以';t访问实例化对象c#/asp.net
本文关键字:对象 asp net 实例化 访问 可以 | 更新日期: 2023-09-27 18:24:04
我有一个应用程序,当获取页面时,它会实例化一个名为"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
}
}
}
将变量的声明移出方法的范围,使其成为_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
}
}
}
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
}
}
}
如果要在btnCheckNr
中访问guessNr
,请将其置于Page_Load
之外。
SecretNumber guessNr;
然后用CCD_ 5方法分配。
我认为您需要阅读一些关于C#中类(字段、方法、事件)的基本信息。这不是ASP.NET的问题,因为在OOP方面,ASP.NET遵循与任何其他.NET技术完全相同的模式。
显然,您需要在此处使用类型为SecretNumber
的字段