自从2017年9月14日安装了Windows更新后,我们在发布版本中创建某些结构时出现问题。我注意到,在没有该更新的计算机上编译的代码按预期运行(“错误的开始:1.1.1990...”),但是在安装了该更新的计算机上,代码无法正常工作(“错误的开始:1.1.2000...”)。这在所有版本的.NET Framework(从4.x版本开始)中都会发生。
class Program
{
static void Main(string[] args)
{
DateTime start1 = new DateTime(1990, 1, 1, 6, 0, 0);
DateTime end1 = new DateTime(2000, 1, 1, 6, 0, 0);
var r2 = new DateTimeRange(start1, end1);
var r3 = new Range<DateTime>(r2.From, r2.To);
Console.WriteLine($"Wrong start: {r3.From}, correct start: {start1}");
Console.ReadLine();
}
}
public struct DateTimeRange
{
private Range<DateTime> m_range;
public DateTimeRange(DateTime from, DateTime to)
{
m_range = new Range<DateTime>(from, to);
}
public DateTime From
{
get { return m_range.From; }
}
public DateTime To
{
get { return m_range.To; }
}
}
public struct Range<T> where T : struct
{
private T m_from;
private T m_to;
public Range(T from, T to)
{
m_from = from;
m_to = to;
}
public T From
{
get { return m_from; }
}
public T To
{
get { return m_to; }
}
}