TryParse return false 无缘无故
TryParse return false for no reason
我在控制台应用程序中遇到一个简单的 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
'Analyseur' 是假的..
字符串是 20150111224530.. 它只是一个 int..
我已经用停止点检查了 VS 中的数据以确保。
问题出在哪里?
使用 Long 而不是 Int。 Int没那么大。
您可以在 int
或 Int32
中存储的最大值是 int.MaxValue 或 2,147,483,647。
您尝试存储在类型 int
的变量中的值大于此值,因此操作失败。
您应该使用 long
或 Int64
作为此值。
我看到您正在尝试将 DateTime
存储在 int
中。除非您有充分的理由这样做,否则这不是一个好的做法。您可以使用 DateTime.TryParseExact 将输入转换为 DateTime
。如果您使用 int
作为容器,您无法确定用户输入的日期是否有效,但使用 DateTime
是可能的。
As Tim mentioned 您可以使用 "yyyy MM dd HH mm ss"
作为 DateTime.TryParseExact
中的格式字符串并将输入值解析为 DateTime
.
这似乎是 DateTime
而不是 int,所以使用 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
是因为, int
已经装不下了(-2,147,483,648到2,147,483,647),你需要更大的数据类型,比如long
.
我在控制台应用程序中遇到一个简单的 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
'Analyseur' 是假的..
字符串是 20150111224530.. 它只是一个 int..
我已经用停止点检查了 VS 中的数据以确保。
问题出在哪里?
使用 Long 而不是 Int。 Int没那么大。
您可以在 int
或 Int32
中存储的最大值是 int.MaxValue 或 2,147,483,647。
您尝试存储在类型 int
的变量中的值大于此值,因此操作失败。
您应该使用 long
或 Int64
作为此值。
我看到您正在尝试将 DateTime
存储在 int
中。除非您有充分的理由这样做,否则这不是一个好的做法。您可以使用 DateTime.TryParseExact 将输入转换为 DateTime
。如果您使用 int
作为容器,您无法确定用户输入的日期是否有效,但使用 DateTime
是可能的。
As Tim mentioned "yyyy MM dd HH mm ss"
作为 DateTime.TryParseExact
中的格式字符串并将输入值解析为 DateTime
.
这似乎是 DateTime
而不是 int,所以使用 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
是因为int
已经装不下了(-2,147,483,648到2,147,483,647),你需要更大的数据类型,比如long
.