gpt4 book ai didi

c# - 覆盖 DateTime.MinValue 导致问题

转载 作者:行者123 更新时间:2023-11-30 16:20:14 25 4
gpt4 key购买 nike

我们试图在我们的应用程序中覆盖 DateTime.MinValue,但是这样做我们注意到我们的 Web 服务超时,下面是示例代码。不确定哪里出了问题/我们缺少什么。

 public MainWindow()
{
//Introducing this.. Causes timeout of the webservice call...
typeof(DateTime).GetField("MinValue").SetValue(typeof(DateTime),new DateTime(1900, 1, 1));
var yesitworks= DateTime.MinValue;
InitializeComponent();
ServiceReference1.Service1Client client = new ServiceReference1.Service1Client();
//Below call will timeout...
var value =client.GetData(10);
}

PS:对于我们正在尝试解决的问题,这可能不是最佳解决方案,但现在更多的是好奇为什么它不起作用?它有什么关系。

最佳答案

DateTime.MinValue是静态只读字段。这意味着库作者不会期望它发生变化,并且可能编写依赖于它具有预期值的代码。

因此,您不应更改 DateTime.MinValue 的值.

例如,一个库可以将它用作变量的默认值:

private mostRecentDate= DateTime.MinValue;
foreach (var date in myDates)
{
if (date > mostRecentDate)
{
mostRecentDate= date;
}
}

// Do something with the most recent date in myDates...

在这个例子中,如果 myDates仅包含早于 DateTime.MinValue 的新值的日期,那么此代码将设置 mostRecentDateDateTime.MinValue而不是 myDates 中的最新日期.

虽然这个相当人为的示例可能不是好的编程习惯(for example,您可以改用 Nullable),但它是有效代码,如果您更改 DateTime.MinValue 的值,其行为将会改变.

关键是您正在使用的库也可能依赖于 DateTime.MinValue 上的值,所以改变它可能会破坏它们。到目前为止,你很幸运,因为你很早就发现这引入了一个错误。如果你不走运,在你的软件上线并遇到一些极端情况之前,你不会发现问题。

关于c# - 覆盖 DateTime.MinValue 导致问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14448989/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com