gpt4 book ai didi

c# - DateTime 问题 - 值在对象外部可用但在对象内部不可用

转载 作者:行者123 更新时间:2023-11-30 12:36:05 28 4
gpt4 key购买 nike

这是一个非常令人沮丧和奇怪的问题,对于如何解决它的任何建议,我将不胜感激。

我有一个带有私有(private)变量的对象:

private DateTime _maturityDate = DateTime.MaxValue;

它有一个对应的属性:

public DateTime MaturityDate { get; set; }

我有一个方法可以更新数据库中的数据,称为 UpdateInstrumentBase()。该属性是从 Windows 窗体上的 DateTimePicker 控件设置的。它是通过代码设置的,而不是通过数据绑定(bind)设置的:

((Instrument)instrumentBS.DataSource).MaturityDate = dateTimePicker9.Value;

这正确地设置了值:

(我不能发布图片所以你必须相信我它确实可以)

但是 - 这是一个真正奇怪的问题 - 当您进入对象内部时,这就是属性设置的内容。即使尝试在即时窗口中输出它或使用 console.writeline 也会导致以下结果:

? _maturityDate {System.DateTime} Date: Cannot evaluate expression because a thread is stopped at a point where garbage collection is impossible, possibly because the code is optimized.

我试过将日期值作为字符串传递,然后转换为 DateTime 作为解决方法,但是对该对象内部的 ANY DateTime 属性或变量的任何访问 - 不仅仅是这个 - 都会导致这个错误。我到处搜索,但我什至不确定此错误消息是否相关或有用。

如果相关的话,我在 Visual Studio 2008 版本 9.0.21022.8 中使用 .NET Framework 3.5 SP1。

我被难住了。该对象非常复杂,所以我不太愿意发布整个内容,但如果有人有任何想法,我会发布相关代码。

提前致以诚挚的谢意!

最佳答案

这不是您代码中的错误。此处发生的情况是 C# 调试器正在尝试计算表达式并从 CLR 返回 CORDBG_E_ILLEGAL_AT_GC_UNSAFE_POINTCORDBG_E_ILLEGAL_IN_OPTIMIZED_CODE 的返回值。这些错误代码表明无法在当前上下文中计算表达式,并且与实际用户代码几乎没有关系。

迈克·斯托尔 (Mike Stall) 对这些消息进行了很好的分解,以及它们为什么会出现,这可能值得一读。

不幸的是,您几乎无能为力解决此问题。除非问题是您正在优化调试,否则关闭优化将解决问题。

关于c# - DateTime 问题 - 值在对象外部可用但在对象内部不可用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3960757/

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