Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/301.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从嵌套类到包含类的C#成员访问_C# - Fatal编程技术网

从嵌套类到包含类的C#成员访问

从嵌套类到包含类的C#成员访问,c#,C#,我有类B,它嵌套在类A中。在ClassA中,我有一个名为_MyId的变量。。。如何从ClassB访问\u MyId 提前谢谢 您必须引用ClassA的特定实例才能检索成员。如果您的实例被称为foo,只需使用foo即可。_MyId在ClassB的构造函数中传递类A的实例。简单地说,您需要对ClassB中的实例ClassA的引用 C#的嵌套类与Java的工作方式不同,如果您已经习惯了的话。当应用于嵌套类型时,最接近的模拟是Java的静态类(这意味着C#的嵌套类与外部类的特定实例没有关联) 换句话说,

我有类B,它嵌套在类A中。在ClassA中,我有一个名为_MyId的变量。。。如何从ClassB访问\u MyId


提前谢谢

您必须引用
ClassA
的特定实例才能检索成员。如果您的实例被称为
foo
,只需使用
foo即可。_MyId

在ClassB的构造函数中传递类A的实例。

简单地说,您需要对
ClassB
中的实例
ClassA
的引用

C#的嵌套类与Java的工作方式不同,如果您已经习惯了的话。当应用于嵌套类型时,最接近的模拟是Java的
静态类
(这意味着C#的嵌套类与外部类的特定实例没有关联)


换句话说,与外部类相比,C#的嵌套类不是“特殊”的,只是它们可以看到外部类的私有成员。尽管如此,您仍然需要对外部类的引用才能访问它们。

如果字段是
静态的
,您可以简单地将其称为
ClassA.\u MyId
。如果不是,您应该使用
classAInstance.\u MyId
其中
classAInstance
ClassA
的一个实例


如果您来自Java背景,您应该注意C#中的嵌套类类似于Java中的static嵌套类。

如果_MyId是static,您可以通过它的名称或ClassA访问它。_MyId

但除此之外,您首先需要一个ClassA实例,并且与另一个类(不是嵌套的)的acces几乎没有区别。但是B类的成员确实可以访问A类的私有成员

说明:嵌套类是两种类型之间的静态关系,实例之间没有隐式关系。您必须在对象之间传递对对象的引用,就像类没有嵌套一样