如何将页面中声明的变量访问到内部类?

Posted

技术标签:

【中文标题】如何将页面中声明的变量访问到内部类?【英文标题】:How to access a variable declared in a page to a inner class? 【发布时间】:2018-07-19 06:41:08 【问题描述】:

我想将在 Main 类中声明为 public 的变量访问到在同一页面中创建的新类。我已经完成了如下操作。但无法访问该类中的变量

public sealed partial class MainPage : Page
 
    public bool is_arrived = false;
    public MainPage()
    
        this.InitializeComponent();
        bool is_arrived=true;
        CallingWebServices asyn_task = new CallingWebServices();
    
    public class CallingWebServices
    
        //want to access variable "is_arrived" here.
    

【问题讨论】:

How to restrict access to nested class member to enclosing class?的可能重复 为什么要在页面中创建嵌套类?你想做什么? 【参考方案1】:

在这种情况下,您应该使用构造函数注入并将 is_arrived 的值传递给 CallingWebServices。

public sealed partial class MainPage : Page
 
    public bool is_arrived = false;
    public MainPage()
    
        this.InitializeComponent();
        bool is_arrived=true;
        CallingWebServices asyn_task = new CallingWebServices(is_arrived);
    
    public class CallingWebServices
    
         private bool _isArrived;
         public CallingWebServices(bool isArrived)
         
            _isArrived=isArrived;
         
        //want to access variable "is_arrived" here.
    

这种方法的一个问题是,如果您在父类中更改 is_arrived 值,它将失去同步。所以另一种方法是将父类的引用传递给内部类。

public sealed partial class MainPage : Page
 
    public bool is_arrived = false;
    public MainPage()
    
        this.InitializeComponent();
        bool is_arrived=true;
        CallingWebServices asyn_task = new CallingWebServices(this);
    
    public class CallingWebServices
    
         private MainPage _Instance;
         public CallingWebServices(MainPage instance)
         
            _Instance=instance;
         
        //Access variable "instance.is_arrived" here.
     

但是,应劝阻此类做法,并应通过采用更好的设计方法来消除这种做法。

【讨论】:

以上是关于如何将页面中声明的变量访问到内部类?的主要内容,如果未能解决你的问题,请参考以下文章

java内部类如何被外部引用

匿名内部类不能访问外部类方法中的局部变量,除非变量被声明为final类型

内部类初识

内部类和外部类的实例变量可以共存

20165337第五周学习总结

匿名对象 内部类 包的声明与访问 访问修饰符