-6

一連のリストがあります。名前でリストを検索し、リストを返すメソッドを作成したいと思います。リストはクラス自体に保存されます。

    public void AddCord(string cord, string listName)
    {
        List<String> myShip;
        myShip = findListByName(listName);
        myShip.Add(cord);
    }

コードは最も単純な方法のままにしてください。

4

3 に答える 3

2

これを試して:

//Create global dictionary of lists
Dictionary<string, List<string> dictionaryOfLists = new Dictionary<string, List<string>();

//Get and create lists from a single method
public List<string> FindListByName(string stringListName)
{
    //If the list we want does not exist yet we can create a blank one
    if (!dictionaryOfLists.ContainsKey(stringListName))
        dictionaryOfLists.Add(stringListName, new List<string>());

    //Return the requested list
    return dictionaryOfLists[stringListName];
}
于 2013-03-24T12:33:45.120 に答える
1
Dictionary<string, List<string>> myRecords=new Dictionary<string, List<string>>();

if(!myRecords.ContainsKey("abc"))
{
    List<string> abcList=new List<string>();
    myRecords.Add("abc", abcList);
}
else 
    myRecords.["abc"].Add("a");
于 2013-03-24T12:32:19.183 に答える
-1

これが私の答えです。私の目にはもう少し楽しい解決策があります:D

class MyList<T> : List<T>
{
    static List<object> superlist;

    public string name;

    ~MyList() {
        if (superlist != null)
        superlist.Remove(this);
    }

    public MyList(string name)
        : base() {
        init(name);
    }

    public MyList(string name, int cap)
        : base(cap) {
        init(name);
    }

    public MyList(string name, IEnumerable<T> IE)
        : base(IE) {
        init(name);
    }

    void init(string name) {
        if (superlist == null)
            superlist = new List<object>();

        this.name = name;
        superlist.Add(this);
    }

    public static void AddToListByName(T add, string listName) {
        for (int i = 0; i < superlist.Count; i++) {
            if (superlist[i].GetType().GenericTypeArguments[0] == add.GetType() && ((MyList<T>)(superlist[i])).name == listName) {
                ((MyList<T>)(superlist[i])).Add(add);
                return;
            }
        }
        throw new Exception("could not find the list");
    }

}

これで、コードで簡単かつクリーンに使用できます

        MyList<string> a = new MyList<string>("a");
        MyList<string> b = new MyList<string>("b");

        a.Add("normal add to list a");

        MyList<string>.AddToListByName("hello add to a", "a");
        MyList<string>.AddToListByName("hello add to b", "b");
于 2013-03-24T13:12:19.247 に答える