无法访问实例化对象c#/ asp.net

时间:2012-02-11 21:58:29

标签: c# asp.net object

我有一个应用程序在完成页面获取时,从名为“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
        }
    }
}

4 个答案:

答案 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类型的字段