【问题标题】:C# int & int32 declaration [duplicate]C# int & int32 声明 [重复]
【发布时间】: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 涉及一两百个问题...

标签: c#


【解决方案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类)。

【讨论】:

    猜你喜欢
    • 2010-12-13
    • 1970-01-01
    • 2016-10-22
    • 1970-01-01
    • 2010-11-23
    • 1970-01-01
    • 2014-02-06
    • 2011-05-15
    • 1970-01-01
    相关资源
    最近更新 更多