C# 返回多个列表

C# 返回多个列表,c#,list,C#,List,以下列表是在名为“Entities”的类中创建的,它们是私有的。 我想通过以下方式返回它们(并在另一个类中使用): public List<string> getCMList() { return exceptionsCM; } public List getCMList() { 返回异常cm; } 但如果有10个列表,我必须为所有列表编写一个公共“get”方法。是否可以编写一个方法,将字符串作为输入并返回该列表? 应该是类似于 publi

以下列表是在名为“Entities”的类中创建的,它们是私有的。 我想通过以下方式返回它们(并在另一个类中使用):

    public List<string> getCMList()
    {
        return exceptionsCM;
    }
public List getCMList()
{
返回异常cm;
}
但如果有10个列表,我必须为所有列表编写一个公共“get”方法。是否可以编写一个方法,将字符串作为输入并返回该列表? 应该是类似于

public List<string> getList(.....)
{
     return exceptionCM;
} //if we call getList(exceptionCM).


        exceptionsCM = new List<string>();
        exceptionsCM.Add("CM12");
        exceptionsCM.Add("CM701");
        exceptionsCM.Add("CM901/CM30");
        exceptionsCM.Add("CM901K");
        exceptionsCM.Add("CM1101");
        exceptionsCM.Add("CM1101K");

        //List with Multi Mill exceptions, they are included in the new MultiB
        exceptionsMultiB = new List<string>();
        exceptionsMultiB.Add("Multi650/450");
        exceptionsMultiB.Add("Multi660/630");
        exceptionsMultiB.Add("Multi650/800");
        exceptionsMultiB.Add("Multi650/1000");

        //List with Multi Mill exceptions, they are included in the new Multi01
        exceptionsMulti01 = new List<string>();
        exceptionsMulti01.Add("Multi301");
        exceptionsMulti01.Add("Multi601");
        exceptionsMulti01.Add("Multi801");
        exceptionsMulti01.Add("Multi1001");
public List getList(…)
{
返回异常;
}//如果我们调用getList(exceptionCM)。
exceptionsCM=新列表();
例外情况CM.添加(“CM12”);
例外情况CM.添加(“CM701”);
例外情况CM.添加(“CM901/CM30”);
例外情况CM.添加(“CM901K”);
例外情况CM.添加(“CM1101”);
例外情况CM.添加(“CM1101K”);
//列出多工厂例外情况,它们包括在新的多工厂数据库中
exceptionsMultiB=新列表();
例外情况多B.添加(“多650/450”);
例外情况多B.添加(“多660/630”);
例外情况多B.添加(“多650/800”);
例外情况多B.添加(“多650/1000”);
//列出多工厂例外情况,它们包括在新的Multi01中
exceptionsMulti01=新列表();
例外情况MULTI01.添加(“Multi301”);
例外情况MULTI01.添加(“Multi601”);
例外情况MULTI01.添加(“Multi801”);
例外情况MULTI01.添加(“Multi1001”);
您可以为此使用类

private Dictionary<string, List<<string>> dictionary = 
    new Dictionary<string, List<<string>>();

//fill that dictionary
...

//get list from a dictionary by list id
public List getList(string listId) 
{
    return dictionary[listId];
}
private Dictionary您可以为此使用类

private Dictionary<string, List<<string>> dictionary = 
    new Dictionary<string, List<<string>>();

//fill that dictionary
...

//get list from a dictionary by list id
public List getList(string listId) 
{
    return dictionary[listId];
}

private Dictionary您可以将所有列表放入字典中:

// your code here
dictionary = new Dictionary<string, List<string>>();
dictionary.Add("exceptionsCM", exceptionsCM);
//您的代码在这里
字典=新字典();
添加(“exceptionsCM”,exceptionsCM);
那么getList方法就简单到:

public List<string> getList(string name)
{
    return dictionary[name];
}
public List getList(字符串名称)
{
返回字典[名称];
}

您可以将所有列表放入字典中:

// your code here
dictionary = new Dictionary<string, List<string>>();
dictionary.Add("exceptionsCM", exceptionsCM);
//您的代码在这里
字典=新字典();
添加(“exceptionsCM”,exceptionsCM);
那么getList方法就简单到:

public List<string> getList(string name)
{
    return dictionary[name];
}
public List getList(字符串名称)
{
返回字典[名称];
}

你可以像那样把它们都放在一个静态字典里

Dictionary<string, List<string>> ListstDict = new Dictionary<string, List<string>>();
ListsDict.Add("exceptionsCM", exceptionsCM);
...
Dictionary ListstDict=newdictionary();
添加(“例外情况CM”,例外情况CM);
...
然后您可以编写如下方法:

public List<string> GetList(string name)
{
    return ListsDict.ContainsKey(name) ? ListsDict[name] : null;
}
public List GetList(字符串名称)
{
返回ListsDict.ContainsKey(名称)?ListsDict[名称]:空;
}
但话说回来,如果你能简单地得到这些列表,那么这些列表是私有的又有什么意义呢?使用私有setter将它们声明为公共属性会更容易

public List<string> exceptionsCM { get; private set; }
public List exceptionsCM{get;private set;}

你可以像那样把它们都放在一个静态字典里

Dictionary<string, List<string>> ListstDict = new Dictionary<string, List<string>>();
ListsDict.Add("exceptionsCM", exceptionsCM);
...
Dictionary ListstDict=newdictionary();
添加(“例外情况CM”,例外情况CM);
...
然后您可以编写如下方法:

public List<string> GetList(string name)
{
    return ListsDict.ContainsKey(name) ? ListsDict[name] : null;
}
public List GetList(字符串名称)
{
返回ListsDict.ContainsKey(名称)?ListsDict[名称]:空;
}
但话说回来,如果你能简单地得到这些列表,那么这些列表是私有的又有什么意义呢?使用私有setter将它们声明为公共属性会更容易

public List<string> exceptionsCM { get; private set; }
public List exceptionsCM{get;private set;}

使用字典和枚举

对列表键而不是字符串使用枚举可以使代码对键重命名更加健壮。也就是说,当您在Entities类中将MultiB重命名为MultiB1时,编译器将不会显示有关调用GetList(“MultiB”)的任何错误和警告。在使用枚举的情况下,编译器会向您显示这些错误

internal class Entities
{
    private Dictionary<ListKey, List<string>> _liststDict =
      new Dictionary<ListKey, List<string>>
        {
          {ListKey.Cm, new List<string> {"CM12", "CM701", "CM901/CM30", "CM901K", "CM1101", "CM1101K"}},
          {ListKey.MultiB, new List<string> {"Multi650/450", "Multi660/630", "Multi650/800", "Multi650/1000"}},
          {ListKey.Multi01, new List<string> {"Multi301", "Multi601", "Multi801", "Multi1001"}}
        };

    public List<string> GetList(ListKey key)
    {
      return _liststDict[key];
    }

    internal enum ListKey
    {
      Cm,
      MultiB,
      Multi01
    }
}


internal class EntitiesTester
{
    public static void Do()
    {
      Entities entities = new Entities();

      Console.Out.WriteLine("CM count = {0}", entities.GetList(Entities.ListKey.Cm).Count);
      Console.Out.WriteLine("MultiB count = {0}", entities.GetList(Entities.ListKey.MultiB).Count);
      Console.Out.WriteLine("Multi01 count = {0}", entities.GetList(Entities.ListKey.Multi01).Count);
    }
}
内部类实体
{
私人词典=
新词典
{
{ListKey.Cm,新列表{“CM12”、“CM701”、“CM901/CM30”、“CM901K”、“CM1101”、“CM1101K”},
{ListKey.MultiB,新列表{“Multi650/450”、“Multi660/630”、“Multi650/800”、“Multi650/1000”},
{ListKey.Multi01,新列表{“Multi301”、“Multi601”、“Multi801”、“Multi1001”}
};
公共列表GetList(ListKey)
{
返回_liststDict[key];
}
内部枚举列表键
{
厘米
多B,
Multi01
}
}
内部类实体测试器
{
公共静态void Do()
{
实体=新实体();
WriteLine(“CM count={0}”,entities.GetList(entities.ListKey.CM).count);
WriteLine(“MultiB count={0}”,entities.GetList(entities.ListKey.MultiB.count);
Console.Out.WriteLine(“Multi01 count={0}”,entities.GetList(entities.ListKey.Multi01.count);
}
}

使用字典和枚举

对列表键而不是字符串使用枚举可以使代码对键重命名更加健壮。也就是说,当您在Entities类中将MultiB重命名为MultiB1时,编译器将不会显示有关调用GetList(“MultiB”)的任何错误和警告。在使用枚举的情况下,编译器会向您显示这些错误

internal class Entities
{
    private Dictionary<ListKey, List<string>> _liststDict =
      new Dictionary<ListKey, List<string>>
        {
          {ListKey.Cm, new List<string> {"CM12", "CM701", "CM901/CM30", "CM901K", "CM1101", "CM1101K"}},
          {ListKey.MultiB, new List<string> {"Multi650/450", "Multi660/630", "Multi650/800", "Multi650/1000"}},
          {ListKey.Multi01, new List<string> {"Multi301", "Multi601", "Multi801", "Multi1001"}}
        };

    public List<string> GetList(ListKey key)
    {
      return _liststDict[key];
    }

    internal enum ListKey
    {
      Cm,
      MultiB,
      Multi01
    }
}


internal class EntitiesTester
{
    public static void Do()
    {
      Entities entities = new Entities();

      Console.Out.WriteLine("CM count = {0}", entities.GetList(Entities.ListKey.Cm).Count);
      Console.Out.WriteLine("MultiB count = {0}", entities.GetList(Entities.ListKey.MultiB).Count);
      Console.Out.WriteLine("Multi01 count = {0}", entities.GetList(Entities.ListKey.Multi01).Count);
    }
}
内部类实体
{
私人词典=
新词典
{
{ListKey.Cm,新列表{“CM12”、“CM701”、“CM901/CM30”、“CM901K”、“CM1101”、“CM1101K”},
{ListKey.MultiB,新列表{“Multi650/450”、“Multi660/630”、“Multi650/800”、“Multi650/1000”},
{ListKey.Multi01,新列表{“Multi301”、“Multi601”、“Multi801”、“Multi1001”}
};
公共列表GetList(ListKey)
{
返回_liststDict[key];
}
内部枚举列表键
{
厘米
多B,
Multi01
}
}
内部类实体测试器
{
公共静态void Do()
{
实体=新实体();
WriteLine(“CM count={0}”,entities.GetList(entities.ListKey.CM).count);
WriteLine(“MultiB count={0}”,entities.GetList(entities.ListKey.MultiB.count);
Console.Out.WriteLine(“Multi01 count={0}”,entities.GetList(entities.ListKey.Multi01.count);
}
}

那么我如何从另一个类调用它们?仅通过创建类的实例?作为