Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/magento/5.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问题:嵌套类,可访问性_C#_Class_Nested - Fatal编程技术网

C# 简单C问题:嵌套类,可访问性

C# 简单C问题:嵌套类,可访问性,c#,class,nested,C#,Class,Nested,我知道这可能很简单,但我似乎不知道是否有可能做到这一点 我有以下代码: public class A { thisMethod(); public class B { someMethod(); } } public class C { A myA = new A(); A.B.someMethod(); } 如果我已经实例化了A,为什么不能访问B 提前谢谢你的帮助 您试图访问它,就像它是一个静态方法或一个名为B的类a

我知道这可能很简单,但我似乎不知道是否有可能做到这一点

我有以下代码:

public class A {    
thisMethod();  

 public class B {    
  someMethod();    
   }   
}


public class C {    
A myA = new A();    
A.B.someMethod();    
}
如果我已经实例化了A,为什么不能访问B


提前谢谢你的帮助

您试图访问它,就像它是一个静态方法或一个名为B的类a的属性一样。您仍然需要创建它的实例—它是一个类声明。我想你在寻找:

public class A {    

public A()
{
   myB = new B();
}

thisMethod();  
public B myB
{
 get; set;
}

 public class B {    
  someMethod();    
   }   
}


public class C {    
A myA = new A();    
A.myB.someMethod();    
}

不过需要注意的是,不建议公开公开嵌套类。

您试图访问它,就像它是一个静态方法或一个名为B的类a属性一样。您仍然需要创建它的实例—它是一个类声明。我想你在寻找:

public class A {    

public A()
{
   myB = new B();
}

thisMethod();  
public B myB
{
 get; set;
}

 public class B {    
  someMethod();    
   }   
}


public class C {    
A myA = new A();    
A.myB.someMethod();    
}

不过需要注意的是,不建议公开公开嵌套类。

您需要A.B的实例来调用A.B上的实例方法:

A.B foo = new A.B();
foo.SomeMethod();
在您的示例中,您甚至没有尝试使用您创建的新实例


如果您有Java背景,那么可能需要指出,C中的嵌套类与Java中的静态嵌套类类似。从嵌套类的实例到容器类的实例没有隐式引用。访问也是另一种方式——在Java中,外部类可以访问其嵌套类的私有成员;在C中,嵌套类可以访问其外部类的私有成员。

您需要A.B的实例来调用A.B上的实例方法:

A.B foo = new A.B();
foo.SomeMethod();
在您的示例中,您甚至没有尝试使用您创建的新实例


如果您有Java背景,那么可能需要指出,C中的嵌套类与Java中的静态嵌套类类似。从嵌套类的实例到容器类的实例没有隐式引用。访问也是另一种方式——在Java中,外部类可以访问其嵌套类的私有成员;在C中,嵌套类可以访问其外部类的私有成员。

我想我这样做的原因只是为了逻辑分组。所以我会用Player.Controls和Player.Library代替一个大类中的所有方法。但是为什么要嵌套它们呢?为什么不在一个播放器名称空间中创建完全独立的类呢?我想我这样做的原因只是为了逻辑分组。所以我会用Player.Controls和Player.Library代替一个大类中的所有方法。但是为什么要嵌套它们呢?为什么不在播放器名称空间中创建完全独立的类呢?