c# 在类嵌套结构中引用非静态类成员
Posted
技术标签:
【中文标题】c# 在类嵌套结构中引用非静态类成员【英文标题】:c# reference to non-static class members in a class nested struct 【发布时间】:2021-10-06 16:26:52 【问题描述】:我在class C
中有一个struct S
作为嵌套声明,我想在S
的构造函数中引用C
的成员:
public class C
private int class_state = 0;
private struct S
public int struct_state;
public S ()
struct_state = class_state;
public void foo (int state)
class_state = state;
public void bar ()
S s = new S();
产生一个错误,即class_state
是非静态的,因此需要引用C
的实例。
有没有一种隐式方法告诉struct S
引用它被实例化的实例?
【问题讨论】:
不,结构不知道封闭类的哪个实例正在构造它。 只将this
传递给S
的构造函数有什么问题?
【参考方案1】:
没有。与 Java 不同,C# Nested Types 没有对封闭类型实例的“隐含”或“自动”引用。
“嵌套类型可以访问其包含类型可访问的所有成员。它可以访问包含类型的私有和受保护成员,包括任何继承的受保护成员。”
但是:
“要访问包含类型,将其作为参数传递给嵌套类型的构造函数。”
【讨论】:
以上是关于c# 在类嵌套结构中引用非静态类成员的主要内容,如果未能解决你的问题,请参考以下文章