猿问

侦听器方法中的范围问题

我希望能够从此 中的所有方法引用 类的 Reaction 对象> 类。我在第一个事件侦听器方法中声明了 对象。然而,第二个事件侦听器无法访问该类的实例,我不知道如何修复它。EquationClassCalculatorPageReaction


我尝试将第一种方法更改为public,但错误仍然存在。


private void ExampleListenerMethodOne(object sender, RoutedEventArgs e)

{

    var Reaction = new EquationClass("Example");

    Reaction.species = Reaction.MakeAndReturnSpeciesArray();

}


public void ExampleListenerMethodTwo(object sender, RoutedEventArgs e)

{

    Console.WriteLine(Reaction.species); //Here is the 'Does not exist 

                                         //in current context error'

}

我希望能够从任何地方访问该对象,但我不能。 我从 Visual Studio 收到 “当前上下文中不存在错误”。我已阅读其他相关问题,但找不到解决方案。


扬帆大鱼
浏览 106回答 1
1回答

绝地无双

只需将其转变为财产即可。在这里,该类实例化了一个 Reaction 类型的新变量(以及您需要执行的任何操作)。因此,对于下面需要它的两个方法来说,myReaction 变量处于类级别范围内。以前,您的变量位于方法范围内,这意味着它不能在方法之外使用。代码块中定义的变量也有一个块作用域,例如 if 语句,其中变量在 if 语句中定义。public class MyClass{    public Reaction myReaction { get; set; }    public MyClass()    {        myReaction = new EquationClass("Example");    }    private void ExampleListenerMethodOne(object sender, RoutedEventArgs e)    {        myReaction.species = Reaction.MakeAndReturnSpeciesArray();    }   public void ExampleListenerMethodTwo(object sender, RoutedEventArgs e)   {       Console.WriteLine(Reaction.species);   }}
随时随地看视频慕课网APP
我要回答