C# 施放和分析

以下哪种代码更好地使用 c# 为什么?


//DateTime/g[0]["MyUntypedDateField"]/.ToShortDateString//


或者


DateTime.Parse/g[0]["MyUntypedDateField"].ToString///.ToShortDateString//


最终,更好地投掷或拆卸?
已邀请:

郭文康

赞同来自:

如果一个 g[0]["MyUntypedDateField"] 确实是一个物体 DateTime, 这是最好的选择。 如果不是真的 DateTime, 然后您没有其他选择,而是使用语法分析 /你会得到 InvalidCastException, 如果你尝试使用/

小明明

赞同来自:

铸造是

只要

好答案。

你必须记住结果 ToString 和 Parse 并不总是准确 - 当您无法在这两个功能之间安全移动时,存在案例。

在文件中 ToString 据说它使用当前的流量培养设置。 在文件中 Parse 据说他还使用当前的流量文化设置 /到目前为止,一切都很好 - 他们使用相同的文化/, 但有明确的注意:

格式受到当前对象的属性的影响。 DateTimeFormatInfo, 默认情况下,默认情况下源自控制面板的区域和语言参数。

方法的原因之一 Parse 可能意外地扔掉了 FormatException, 在于当前的属性 DateTimeFormatInfo.DateSeparator 和 DateTimeFormatInfo.TimeSeparator 具有相同的价值。

因此,根据用户设置,代码 ToString/Parse 可能意外失败......

帅驴

赞同来自:

您的代码假定变量可以是一个看起来像日期的日期或字符串。 您可以通过带来返回日期,但必须分析线路。 分析有两个预订;

如果您不确定可以分析此行,请使用
DateTime.TryParse//

.

总是打开你想要拆卸的文化的参考,因为。
ToShortDateString//

在不同的地方返回不同的输出。 您几乎肯定希望使用相同的文化进行句法分析。 我提供处理这两个情况;


private DateTime ParseDateTime/object data/
{
if /data is DateTime/
{
// already a date-time.
return /DateTime/data;
}
else if /data is string/
{
// it's a local-format string.
string dateString = /string/data;
DateTime parseResult;
if /DateTime.TryParse/dateString, CultureInfo.CurrentCulture,
DateTimeStyles.AssumeLocal, out parseResult//
{
return parseResult;
}
else
{
throw new ArgumentOutOfRangeException/"data",
"could not parse this datetime:" + data/;
}
}
else
{
// it's neither a DateTime or a string; that's a problem.
throw new ArgumentOutOfRangeException/"data",
"could not understand data of this type"/;
}
}


然后叫这样;


ParseDateTime/g[0]["MyUntypedDateField"/.ToShortDateString//;


请注意,坏数据会导致例外,所以您想捕获它。

此外,操作员 'as' 不使用数据类型 DateTime, 由于它仅使用引用类型,并且DateTime是一种值。

涵秋

赞同来自:

如何 @Brian R. 邦迪指出,这取决于实施

g[0]["MyUntypedDateField"]

. 安全练习是使用

DateTime.TryParse

和在

质量

操作员。

奔跑吧少年

赞同来自:

语法分析需要一行进入,对象需要对象,因此,在第二个示例中,您需要执行两个线索:字符串中的一个对象,然后从行中执行 DateTime. 第一的 - 不是。

但是,如果在执行带来时出现排除风险,您可以继续第二次路线以避免昂贵的异常。 否则,继续最有效的路线,只需带一次 /来自对象K. DateTime/, 而不是两次 /从对象到字符串到 DateTime/.

君笑尘

赞同来自:

有各种方法的比较
http://blogs.msdn.com/bclteam/ ... .aspx
.

要回复问题请先登录注册