在 C# 中将 var 转换为 int?

问题描述 投票:0回答:3

错误来自 [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);
            }
        }
    }
c# console-application
3个回答
0
投票

为什么不使用
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.");

希望能有所帮助。


-1
投票
 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));

-2
投票

您的

fileLine
不是整数,因此出现错误。

© www.soinside.com 2019 - 2024. All rights reserved.