引用属性

本文关键字:属性 引用 | 更新日期: 2023-09-27 18:16:46

假设我有这样的代码

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();
       }
     }
    }
}

现在假设我在myList的Class3实例中有一个Class2实例。是否有可能为Class2方法myClass2Method()访问myList而不传递列表作为参数?

引用属性

你可以,但你不想。您可以向Class1List类型的class2添加成员,当您向mylist添加class2的实例时,您可以将该成员设置为mylist,然后在函数中使用本地成员。但是这样做对你不好,不要这样做,你的设计是错误的,你需要问一个不同的问题(如何设计_____)。

不是。如果你想一下,二班就坐在那里。它不知道在某个地方有一个引用它的列表,因此无法获得对该列表本身的引用。

你在问一个类是否可以访问它的兄弟。总之:No.

类只能访问自己和其中的类型/值。类不能访问构造它们的作用域(可以认为是它们的父作用域)。如果不能访问父类,就不能访问兄弟类,兄弟类就是在同一父类作用域中构造的另一个对象

我相信你实际上是在问一个实例是否可以访问包含它的列表。如果这是正确的,那么不,不传递一个显式引用。你想解决的具体问题是什么?

如果声明

Class1List myList = new Class1List();

internal Class1List myList = new Class1List();

如果类2和类3在同一个命名空间,那么类2可以访问它