C#IEnumerable不允许访问子项

Joh*_*nny 0 c# ienumerable

使长话短说.我有以下代码:

class MyList : IEnumerable
{
    private List<string> T1 = new List<string>();
    private List<string> T2 = new List<string>();
    private List<string> T3 = new List<string>();
    public List<string> Name { set { T1 = value; } get { return T1; } }
    public List<string> DataType { set { T2 = value; } get { return T2; } }
    public List<string> Nullable { set { T3 = value; } get { return T3; } }
    IEnumerator IEnumerable.GetEnumerator()
    {
        return (IEnumerator)GetEnumerator();
    }
    public MyList<List<string>, List<string>, List<string>> GetEnumerator()
    {
        return new MyList<List<string>, List<string>, List<string>>(T1, T2, T2);
    }
}
Run Code Online (Sandbox Code Playgroud)

我想要的是像这样访问它:

       MyList ml = new MyList();
       foreach (var item in ml)
       {
           str = item.Name;
       }
Run Code Online (Sandbox Code Playgroud)

它不允许我访问子项,如item.Name或item.DataType.

CSJ*_*CSJ 6

看来你正在尝试列出一些东西,每个东西都有3个属性:Name,DataType,Nullable.试试这个:

class MyItem 
{
    public string Name { get; set; }
    public string DataType { get; set; }
    public string Nullable { get; set; }  // also, consider making this bool
}
Run Code Online (Sandbox Code Playgroud)

然后列出那些.

  • 您正在实现一个自定义元组列表(您的理想样本用法演示了这一点).而不是使用3个并行列表来实现目标(T1 [0],T2 [0]和T3 [0]共同描述一个对象),您应该收集它们自己类型的三个属性.制作它们的清单是微不足道的. (2认同)