C# int & int32 声明 [重复]

Posted

技术标签:

【中文标题】C# int & int32 声明 [重复]【英文标题】:C# int & int32 declaration [duplicate] 【发布时间】:2017-08-10 12:34:23 【问题描述】:

我是 c# 新手,请原谅我,但我只是想知道为什么我必须将 int 转换为 int32?

例如,我将 lowerRange 声明为 int,但稍后当我要读取用户输入时,我必须将其转换为 int32,否则它会给我一个错误,提示我“无法将类型 'string' 隐式转换为'int'。

或者我假设我必须转换,因为用户正在输入一个字符串,我必须将它转换为一个 int,在这种情况下,我想知道为什么我必须首先声明 lowerRange 作为一个 int地点?

int lowerRange;
...
lowerRange = Convert.ToInt32(Console.ReadLine());

【问题讨论】:

int 具有数字特征。你可以在int 上进行数字运算,而在string 上是不可能的,是的,用户输入是字符串。 “为什么我必须将 int 转换为 int32”——实际上无法回答这个问题,因为它们是同一类型的不同名称,并且您无法在 C# 中表达它们之间的转换。 .. 另一方面,将字符串转换为 int 涉及一两百个问题... 【参考方案1】:

Console.ReadLine() 方法返回一个string,如果您想将其分配给lowerRange 整数变量,则需要对其进行解析并转换为整数(使用Convert.ToInt32)。

所以基本上你有这个:

int lowerRange;
...
string userInput = Console.ReadLine();
lowerRange = Convert.ToInt32(userInput);

还要注意ReadLine 方法返回字符串的原因是因为用户可以输入任何内容作为输入。所以你可能想用TryParse方法验证用户输入的数字是否有效,否则ToInt32方法会抛出异常:

string userInput = Console.ReadLine();
if (int.TryParse(userInput, out lowerRange))

    // The user entered a valid integer you can use the lowerRange variable here

else

    Console.WriteLine("Please enter a valid number");

【讨论】:

我会有点保守使用TryParse,因为如果输入了无效的字符串,它将返回0,如果0 在即将到来的阶段中意味着某些东西,这可能会导致意外行为。使用try/catch 可以让您更好地控制要做什么。【参考方案2】:

我必须将它转换为 int32 否则它 给我一个错误,说我“无法将类型'字符串'隐式转换为 'int'。

因为 Console.Readline() 返回的字符串来自用户输入。

或者我假设我必须转换,因为用户正在输入 字符串,我必须将其转换为 int,在这种情况下,这让我 想知道为什么我必须首先将 lowerRange 声明为 int 吗?

如果您想将lowerRange 用作字符串,则无需将其声明为整数。但是如果你想把它当作一个整数使用,那么你需要转换它(使用Convert类)。

【讨论】:

以上是关于C# int & int32 声明 [重复]的主要内容,如果未能解决你的问题,请参考以下文章

C ++中类定义中int&x声明的意义是啥[重复]

C# 从 List<List<int>> 中删除重复项

C#中的十六进制操作[重复]

防止在字典c#中作为值添加的对象的重复变量

asp.net c# int.Parse 或 Convert.toInt [重复]

C# Enum,Int,String的互相转换