全部博文(1293)
分类: 嵌入式
2012-09-20 11:37:41
1、案例出错现场“无法通过嵌套类型访问外部类型的非静态成员”
2、源文件代码分析
点击(此处)折叠或打开
上面CS文件的基本结构是:
外部类型 BBB,
BBB有一个公有方法,setProgressBar();
BBB里面有一个内部类型CWaitForGetPresetOver;
上面代码,当执行到CWForGetPresetOver_demo.CWaitForGetPresetOver();的时候就会爆出1中的错误。
3、解决方法
主要是修改嵌套类型,在其构造函数中将外部类型传进去;再在嵌套类型内部通过外部类型对象进行操作其成员函数!
代码修改如下:
点击(此处)折叠或打开
4、参考文献
Msdn上说:
嵌套类型(或内部类型)可访问包含类型(或外部类型)。若要访问包含类型,请将其作为构造函数传递给嵌套类型。例如:
点击(此处)折叠或打开
- C# code
- public class Container
- {
- public class Nested
- {
- private Container m_parent;
- public Nested()
- {
- }
- public Nested(Container parent)
- {
- m_parent = parent;
- }
- }
- }
点击(此处)折叠或打开
- public class checkFlowThread
- {
- Form1 form1;
- public checkFlowThread(Form1 f)
- {
- this.form1=f;
- }
- public void checkFlow()
- {
- form1.Label.Text = "想访问外部类的非静态成员";
- }
- }
嵌套类型可访问包含类型的私有成员和受保护的成员(包括所有继承的保护的成员)。