假设我有这段代码
public class Class1
{
List<Class2> myClass2List = new List<Class2>;
public Class1() { }
}
public class Class1List : List { }
public class Class2
{
public Class2() { };
//Class2 objects will sit in a list that is an attribute of a Class1 object
// class1 objects will be in a list that is an attribute of a Class3 object
// is it possible for this method to access the list in the Class3 object
// without passing the list as a parameter.
public void myClass2Method(){ }
}
public class Class3
{
Class1List myList = new Class1List();
public Class3(){ }
static void Main()
{
Class3 myClass3Var = new Class3();
// do something to fill myList;
// added some code to maybe make it a bit less muddy
foreach (Class1 c1 in this.Class1List){
foreach (class2 c2 in c1.myClass2List{
// here is where I want to reference the Class1List attribute of the
/// Class3 object - do I need to pass the list as a paramter?
c2.MyClass2Method();
}
}
}
}
现在假设我在Class3的实例中的myList中有一个Class2实例。 Class2方法myClass2Method()是否有可能访问myList wouthout并将列表作为参数传递?
答案 0 :(得分:0)
不是。如果你考虑一下,2级就坐在那里。它不知道有一个列表在某个地方引用了它,因此无法获得对该列表本身的引用。
答案 1 :(得分:0)
你问的是一个班级是否可以访问兄弟姐妹。简而言之:不。
类只能访问自己及其中的类型/值。类无法访问构造它们的范围(可以将其视为父范围)。如果无法访问父级,则无法访问兄弟,这将是发生的另一个对象,将在同一父范围内构建。
答案 2 :(得分:0)
我相信你实际上是在询问实例是否可以访问包含它的列表。如果这是正确的那么不,不是没有通过明确的引用。你想解决什么具体问题?
答案 3 :(得分:0)
你可以,但你不想。 您可以将成员添加到Class1List类型的class2中,当您将class2的实例添加到mylist时,您可以将所述成员设置为mylist,而不是使用函数中的本地成员。 但是这样做对你不利,不要这样做,你的设计是错误的,你需要问一个不同的问题(如何设计 _ __ _ _ 强>)。
答案 4 :(得分:0)
如果您声明
Class1List myList = new Class1List();
作为
internal Class1List myList = new Class1List();
然后,如果第2类和第3类在同一名称空间中,则第2类可以访问它。