错误来自 [fileLine] 因为 var "stock": "cannot implicitly convert type string to int".但是,我添加了 Convert.ToInt32 行,所以不应该覆盖变量吗?
如果我尝试更改我的代码以删除 var,它会变得更加棘手并导致更多错误。
//snippet of below code
var stock = Convert.ToInt32(splitFileLine[2]);
inventories[fileLine] = new Inventory(name, description, stock);
public void Run()
{
Console.WriteLine("Please enter a new item: ");
string newItems = Console.ReadLine();
List<string> fileLines = File.ReadAllLines("products.txt").ToList();
foreach (var fileLine in fileLines)
{
var splitFileLine = fileLine.Split(new[] { " " }, StringSplitOptions.None);
var name = splitFileLine[0];
var description = splitFileLine[1];
var stock = Convert.ToInt32(splitFileLine[2]);
inventories[fileLine] = new Inventory(name, description, stock);
}
}
}
int.Parse()
?解析方法可用于 16,32 和 64 位有符号整数类型:
Int16.Parse()
Int32.Parse()
Int64.Parse()
方法重载:
解析(字符串 s)
Parse(string s, numberstyle style)
Parse(String s, NumberStyles style, IFormatProvider provider)
例子:
var your_string=100;
int.Parse(your_string); //returns 100
TryParse()
适用于所有整数类型:
Int16.TryParse()
Int32.TryParse()
Int64.TryParse()
方法重载
bool Int32.TryParse(string s, out int result)
bool Int32.TryParse(string s, NumberStyle 样式, IFormatProvider 提供者,输出结果)
例子:
string numberStr = "98765";
int number;
bool isParsable = Int.TryParse(numberStr, out number);
if (isParsable)
Console.WriteLine(number);
else
Console.WriteLine("Could not be parsed.");
希望能有所帮助。
var stock = Convert.ToInt32(splitFileLine[2]);
int _stock = Convert.ToInt32(stock);
or
int _stock = int.Parse(stock);
inventories[fileLine] = new Inventory(name, description, _stock);
或
var stock = Convert.ToInt32(splitFileLine[2]);
inventories[fileLine] = new Inventory(name, description, int.Parse(stock));
或
var stock = Convert.ToInt32(splitFileLine[2]);
inventories[fileLine] = new Inventory(name, description, Convert.ToInt32(stock));
您的
fileLine
不是整数,因此出现错误。