使用列表处理数据

时间:2015-01-26 06:02:17

标签: c#

这是不好的做法吗?或者这样做完全没问题

private readonly List<KeyValuePair<GameType, KeyValuePair<string, string>>> _tempStats = new List<KeyValuePair<GameType, KeyValuePair<string, string>>>();

顺便说一句,GameType是一个枚举器。

我从一个表中下载的数据有一些不同的GameTypes,其中有两个与之关联的字符串。因此,它将解析数据并确定要分配的GameType,并找到表Key和它的Value。它工作,它存储信息,我能够毫无问题地检索它,但它似乎有一个KeyValuePair列表与KeyValuePair不对,但也许它是。使用元组是一种更好的方法吗?

我目前对列表的使用

    private void ParseNodeText(string nText, GameType gmode)
    {
        _tempStats.Clear();
        var reader = new StringReader(nText);
        while((nText = reader.ReadLine()) != null)
        {
            nText = nText.Replace(" ", "");
            if (nText == "")
            {
                continue;
            }
            string statType = Regex.Replace(nText, "[^A-Za-z]", "");
            string statValue = Regex.Replace(nText, "[^0-9]", "");
            //  Console.WriteLine(gmode + " : Found line with Type of {0} and a value of {1}",statType,statValue);
            _tempStats.Add(new KeyValuePair<GameType, KeyValuePair<string, string>>(gmode, new KeyValuePair<string, string>(statType, statValue)));
        }
    }

1 个答案:

答案 0 :(得分:0)

您的解决方案很好,但不是那么好读。

你可以这样做:

private readonly List<GameStats> _tempStats = new List<GameStats>();

和GameStats是一个自己编写的简单类:

public class GameStats
{
    public GameType Type { get; set; }

    public string StatType { get; set; }

    public string StatValue { get; set; }

    public GameStats(GameType gameType, string statType, string statValue)
    {
        this.Type = gameType;
        this.StatType = statType;
        this.StatValue = statValue;
    }
}

并将其添加到您的列表中,如:

_tempStats.Add(new GameStats(gmode, statType, statValue));

我认为,这看起来不错,并会做到。