0

私はこれを作成Object Player(int number, string name, string guild, int hp, int mana) し、CSV ファイルからプレーヤーのリストを読み込んでいます。

   public static List<Player> GetPlayerFromCSV(string file)
    {
        List<Player> result = new List<Player>();
        using (StreamReader sr = new StreamReader(file))
        {
            string line = sr.ReadLine();
            if (line != null) line = sr.ReadLine();

        while (line != null)
        {
            Player pl = AddPlayer(line);
            if (pl != null) result.Add(pl);
            line = sr.ReadLine();
        }
    }
    return result;
}

private static Player AddPlayer(string line)
{
    line = line.TrimEnd(new char[] { ';' });
    string[] parts = line.Split(new char[] { ';' });

    if (parts.Length != 5) return null;

    Player pl = new Player(parts[0], parts[1], parts[2], parts[3], parts[4]);
    return pl;
}

public override string ToString()
{
    return Number + "  -  " + Name;
}

パーツ0、3、4は文字列の配列であるため、文字列でなければならないため、エラーが発生します。parts[0].ToString()なども試しましたがだめでした

4

1 に答える 1

4

文字列を解析する必要があります。

Player pl = new Player(int.Parse(parts[0]), 
                       parts[1], 
                       parts[2], 
                       int.Parse(parts[3]), 
                       int.Parse(parts[4])
                      );

しかし、それは最低限のことです-エラーチェック/検証などを追加できる構築の前に、解析を別のステートメントに移動することもできます。Player

現時点では、パーツ 0、3、または 4 が解析できない場合、どの値がエラーの原因であるかに関するコンテキストのない漠然とした実行時例外が発生します。

于 2013-09-03T17:32:41.933 に答える