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 声明 [重复]的主要内容,如果未能解决你的问题,请参考以下文章