Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/307.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#_Class - Fatal编程技术网

C#子类成员如何找出父列表中的哪个索引?

C#子类成员如何找出父列表中的哪个索引?,c#,class,C#,Class,假设我有一节课 public class member{ int Num; } public class C1 { List<member> Nums=new List<member>(); public C1 { Nums.Add(66); Nums.Add(24); Nums.Add(32); Nums.Add(34); } } 公共类成员{ int-Num; } 公共

假设我有一节课

public class member{
   int Num;
}

public class C1
{
    List<member> Nums=new List<member>();
    public C1
    {
       Nums.Add(66);
       Nums.Add(24);
       Nums.Add(32);
       Nums.Add(34);
    } 
}
公共类成员{
int-Num;
}
公共类别C1
{
List Nums=新列表();
公共C1
{
增加(66);
增加(24);
增加(32);
增加(34);
} 
}
假设我有权访问member类型的对象,它是C1的子对象。假设它的Num=32。我如何让那个对象发现32是列表NUM中的第三个成员?这是没有实际变量Nums的情况!我只有一个member类型的对象

我有一个解决方法…我可以在类成员中添加另一个int,当我添加成员时,我可以为它编制索引。例如

public class member{
   int Num;
   int Order;
}

public class C1
{
    List<member> Nums=new List<member>();
    public C1
    {
       Nums.Add(66,1);
       Nums.Add(24,2);
       Nums.Add(32,3);
       Nums.Add(34,4);
    } 
}
公共类成员{
int-Num;
整数阶;
}
公共类别C1
{
List Nums=新列表();
公共C1
{
增加(66,1);
增加(24,2);
增加(32,3);
增加(34,4);
} 
}
现在,如果我有一个类型为member的对象,我将知道它在Nums列表中的位置

无论如何…如果有更好的方法


提前感谢。

假设您在创建
成员时确实可以访问
NUM
,并且您可以修改
成员
,简单的方法是在
成员
中添加一个字段,该字段将保留对
NUM
的引用

public class member
    {
        int Num;
        private readonly List<member> _parrentList;

        public member(List<member> parrentList)
        {
            _parrentList = parrentList;
        }

        public int IndexOnParentList => _parrentList.IndexOf(this);
    }
公共类成员
{
int-Num;
私有只读列表_parrentList;
公共成员(列表parrentList)
{
_parrentList=parrentList;
}
public int IndexOnParentList=>\u parrentList.IndexOf(this);
}

将索引保持为int将需要更多的维护,因为当
Nums
重新排序或添加/删除项目时,必须更新值。

这在C
Nums.Add(24)中实际起作用吗没有给出错误?成员类中甚至没有getter或setter。(只是好奇)这是伪代码吗?因为正如所写的,这段代码不会编译。对不起,是的,伪代码…我没有编译它。