C# 最适合使用的数据类型?

C# 最适合使用的数据类型?,c#,winforms,validation,datetime,C#,Winforms,Validation,Datetime,我正在创建一个C#forms应用程序,在该应用程序上需要有某种类型的输入框,以便用户以hh:mm:ss格式输入时间。这还需要能够进行验证,以便用户不能输入数字以外的任何内容,还需要进行验证,以便小时必须在0-24之间,分钟必须在0-60之间,秒必须在0-60之间 有人建议使用三个不同的文本框(一个用于小时、分钟和秒),但在我看来,这似乎过时了,而且也比验证更麻烦 我需要能够使用语句基本上说如果时间低于24:00:00,则执行x 我假设DateTime在这种情况下是最好的,对吗?我问这个问题,因为

我正在创建一个C#forms应用程序,在该应用程序上需要有某种类型的输入框,以便用户以hh:mm:ss格式输入时间。这还需要能够进行验证,以便用户不能输入数字以外的任何内容,还需要进行验证,以便小时必须在0-24之间,分钟必须在0-60之间,秒必须在0-60之间

有人建议使用三个不同的文本框(一个用于小时、分钟和秒),但在我看来,这似乎过时了,而且也比验证更麻烦

我需要能够使用语句基本上说
如果时间低于24:00:00,则执行x

我假设
DateTime
在这种情况下是最好的,对吗?我问这个问题,因为我不是100%确定,因为我以前从来没有真正使用过
DateTime
,只是读一下


谢谢。

如果您愿意依赖第三方库,我建议您使用我维护的日期/时间库:。与.NET framework不同,它有一个专门用于“没有日期的时间”的类型

您可以使用在
LocalTime
string
表示之间进行转换


如果你想坚持BCL,那么无论是
DateTime
还是
TimeSpan
都会起作用-但这两种类型实际上都没有描述你试图表示的值的类型。

如果你愿意依赖第三方库,我建议使用我维护的日期/时间库:。与.NET framework不同,它有一个专门用于“没有日期的时间”的类型

您可以使用在
LocalTime
string
表示之间进行转换


如果你想坚持BCL,那么无论是
DateTime
还是
TimeSpan
都会起作用-但这两种类型实际上都没有描述你试图表示的值的类型。

如果你愿意依赖第三方库,我建议使用我维护的日期/时间库:。与.NET framework不同,它有一个专门用于“没有日期的时间”的类型

您可以使用在
LocalTime
string
表示之间进行转换


如果你想坚持BCL,那么无论是
DateTime
还是
TimeSpan
都会起作用-但这两种类型实际上都没有描述你试图表示的值的类型。

如果你愿意依赖第三方库,我建议使用我维护的日期/时间库:。与.NET framework不同,它有一个专门用于“没有日期的时间”的类型

您可以使用在
LocalTime
string
表示之间进行转换



如果您想坚持使用BCL,则
DateTime
TimeSpan
将起作用-但这两种类型实际上都没有描述您试图表示的值类型。

是。您可能需要
DateTime.TryParseExact
,它允许您指定字符串应采用的确切格式。对于时间跨度,您还有另一个选项:TimeSpan。当然,这只会帮助您解析它,但请记住:它不支持区域设置,也不会帮助用户输入正确的文本(因为它只是一个字符串),因此您可能需要屏蔽编辑(除非您希望使用自定义控件)。是否有任何文档在使用
DateTime
选项以及相关验证时特别有用?是的。您可能需要
DateTime.TryParseExact
,它允许您指定字符串应采用的确切格式。对于时间跨度,您还有另一个选项:TimeSpan。当然,这只会帮助您解析它,但请记住:它不支持区域设置,也不会帮助用户输入正确的文本(因为它只是一个字符串),因此您可能需要屏蔽编辑(除非您希望使用自定义控件)。是否有任何文档在使用
DateTime
选项以及相关验证时特别有用?是的。您可能需要
DateTime.TryParseExact
,它允许您指定字符串应采用的确切格式。对于时间跨度,您还有另一个选项:TimeSpan。当然,这只会帮助您解析它,但请记住:它不支持区域设置,也不会帮助用户输入正确的文本(因为它只是一个字符串),因此您可能需要屏蔽编辑(除非您希望使用自定义控件)。是否有任何文档在使用
DateTime
选项以及相关验证时特别有用?是的。您可能需要
DateTime.TryParseExact
,它允许您指定字符串应采用的确切格式。对于时间跨度,您还有另一个选项:TimeSpan。当然,这只会帮助您解析它,但请记住:它不支持区域设置,也不会帮助用户输入正确的文本(因为它只是一个字符串),因此您可能需要屏蔽编辑(除非您希望使用自定义控件)。是否有任何文档特别有助于使用
DateTime
选项及其相关的验证?这是一个非常好的库(特别是因为它抽象了许多概念),但是…我想知道为什么它缺少许多关于间隔的通用操作(交集、并集、合并等)以及间隔列表的概念(以及相关操作)。是的,实现起来并不复杂,但库似乎相当完整@阿德里亚诺:
Interval
本身实际上是一种我想删除的类型,如果可能的话;目前,它只在
Instant
值之间运行,我怀疑这种类型的业务需求是相当不同的。我宁愿没有一个类型,也不愿实现错误的东西,并且长期坚持使用它。我同意要求可能会有很大的不同,但我经常看到这种类型的自定义半工作实现,因此我祈祷有一个正式的实现。即使只有很少的基本操作…@Adriano:也没有什么“官方”的