字符串值未转换为int。我正试图从文件中读取它
lol
1 3 10 100 30 60 UserId
2 3 100 100 30 100 UserId
我将它加载到构造函数
中string[] line;
if (File.Exists(fn))
{
try
{
line = File.ReadAllLines(fn);
for (int i = 1; i < line.Length; i++)
{
if (line[i] != null)
{
string[] pty = line[i].Split('\t');
int ID = Convert.ToInt32(pty[0]);
ItemTypes types = (ItemTypes)int.Parse(pty[1]);
int X = int.Parse(pty[2]);
int Y = Convert.ToInt32(pty[3]);
int Height = Convert.ToInt32(pty[4]);
int Width = Convert.ToInt32(pty[5]);
string text = pty[6].ToLower();
答案 0 :(得分:1)
据我所见,您尝试将枚举的字符串表示形式解析为整数:
ItemTypes types = (ItemTypes)int.Parse(pty[1]);
根据您的代码pty[1]
具有值ItemTypes.Label
,不能将其解析为整数。这也不能解析为枚举。为了使代码有效,您需要将枚举值存储为整数 - 您需要使用相应的int值替换输入中的ItemTypes.Label
(int) ItemTypes.Label
或者,您可以使用Enum.Parse
方法。您仍然需要修改输入以不包含枚举类型,以便ItemTypes.Label
仅变为Label
:
ItemTypes types = (ItemTypes) Enum.Parse(typeof(ItemTypes), pty[1]);
答案 1 :(得分:1)
如果你做这样的事情然后在列表上的迭代器
,那就更好了List<String> wordsList = new List<string>();
string[] pty = line[i].Split('\t');
foreach (string word in pty)
{
wordsList.Add(word);
}
你没有做错,唯一的错误就是ItemTypes.Label无法像@Ivaylo Slavov所提到的那样被解析为Int32