TryParse 无缘无故返回 false
本文关键字:false 返回 无缘无故 TryParse | 更新日期: 2023-09-27 18:37:04
我在控制台应用程序中的简单TryParse
有问题。
看一看:
string DepartureTimeString = Console.ReadLine(); // Enter 2015 01 11 22 45 30
// DepartureTimeString = 2015 01 11 22 45 30
string DepartureTimeStringTrim = DepartureTimeString.Replace(" ", "");
// DepartureTimeStringTrim = 20150111224530
Analyseur = int.TryParse(DepartureTimeStringTrim, out Resultat);
// Analyseur = false
"分析员"是错误的。
字符串是20150111224530.。它只是一个整数。
我用停止点检查了VS中的数据以确保。
问题出在哪里?
可以存储在 int
或 Int32
中的最大值为 int。最大值或 2,147,483,647。
您尝试存储在类型 int
的变量中的值大于此值,因此操作失败。应为此值使用 long
或 Int64
。
我看到您正在尝试在int
中存储DateTime
.这不是一个好的做法,除非你有充分的理由这样做。您可以使用 DateTime.TryParseExact 将输入转换为DateTime
。如果您使用 int
作为容器,则无法确定用户输入是否为有效日期,但可以使用DateTime
。
正如 Tim 在这里提到的,您可以在 DateTime.TryParseExact
中使用"yyyy MM dd HH mm ss"
作为格式字符串,并将输入值解析为DateTime
。
这
似乎是一个DateTime
而不是一个整数,所以使用DateTime.TryParse
:
string departureString = "2015 01 11 22 45 30";
DateTime departure;
if (DateTime.TryParseExact(departureString, "yyyy MM dd HH mm ss", System.Globalization.CultureInfo.InvariantCulture, System.Globalization.DateTimeStyles.None, out departure))
Console.Write("Departure at: " + departure.ToShortDateString());
它不能解析为int
的原因是 alrady 回答,int
无法容纳它(-2,147,483,648 到 2,147,483,647),你需要更大的数据类型,如 long
.
使用 Long 而不是 Int.Int 不是那么大。