嵌套类型问题我只是想创建这个简单的实现:classTest{privateintabc=0;公共类TestClass{privatevoidchangeABC(){abc=123;如果我编译它,它会抱怨:无法通过嵌套类型“B.Test.TestClass”访问外部类型“A.Test”的非静态成员我不喜欢设置的解决方案:staticintabc=0;还有其他解决方案吗?您可能有Java背景,此代码按预期工作。在C#中,嵌套类型是静态的(用Java的说法),即它们没有绑定到父类的实例。这就是您的代码失败的原因。您需要以某种方式将父类的实例传递给子类并访问其成员abc。内部类需要引用外部类的实例:classTest{privateintabc=0;公共类TestClass{privatevoidchangeABC(Testtest){test.abc=123;我不明白为什么TestClass应该在它的实例类中当更改父测试时。也许我的例子可以阐明这一点:Console.WriteLine(abc);//将打印123}intabc=0;公共类TestClass{publicvoidchangeABC(Testt){t.abc=123;}}}像这样使用:TesttheTest=newTest();C#中的嵌套类类似于C++嵌套类,而不是Java内部类当您在另一个类中声明一个类时,内部类仍然像常规类一样工作。嵌套控制访问和可见性,但不控制行为。换句话说,您了解的有关常规类的所有规则也适用于嵌套类。在Java中,内部类有一个秘密的this$0成员,它会记住它所绑定的外部类的实例。换句话说,Java内部类是C#无法使用的语法糖。在C#中,您必须手动执行此操作。以上就是C#学习教程:嵌套类型问题分享的全部内容。如果对你有用,需要进一步了解C#学习教程,希望大家多多关注。本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处:
