Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/visual-studio/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# DateTime issue-值在对象外部可用,但在对象内部不可用_C#_Visual Studio_Winforms_Debugging_.net 3.5 - Fatal编程技术网

C# DateTime issue-值在对象外部可用,但在对象内部不可用

C# DateTime issue-值在对象外部可用,但在对象内部不可用,c#,visual-studio,winforms,debugging,.net-3.5,C#,Visual Studio,Winforms,Debugging,.net 3.5,这是一个非常令人沮丧和离奇的问题,我将感谢任何关于如何解决它的建议 我有一个带有私有变量的对象: private DateTime _maturityDate = DateTime.MaxValue; 它具有相应的属性: public DateTime MaturityDate { get; set; } 我有一个更新数据库中数据的方法,名为UpdateInstrumentBase()。属性是从Windows窗体上的DateTimePicker控件设置的。通过代码设置,而不是通过数据绑定:

这是一个非常令人沮丧和离奇的问题,我将感谢任何关于如何解决它的建议

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

private DateTime _maturityDate = DateTime.MaxValue;
它具有相应的属性:

public DateTime MaturityDate { get; set; }
我有一个更新数据库中数据的方法,名为UpdateInstrumentBase()。属性是从Windows窗体上的DateTimePicker控件设置的。通过代码设置,而不是通过数据绑定:

((Instrument)instrumentBS.DataSource).MaturityDate = dateTimePicker9.Value;
这将正确设置值:

(我不能发布图片,所以你必须相信我)

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

?_到期日期{System.DateTime} 日期:无法计算表达式,因为线程在某个点停止 垃圾收集在哪里 不可能,可能是因为代码 是优化的

我曾尝试将日期值作为字符串传入,然后将其转换为DateTime作为解决方法,但在此对象内对anyDateTime属性或变量(不仅仅是此属性)的任何访问都会导致此错误。我已经到处搜索,但我甚至不确定这个错误消息是否相关或有用

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

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


非常感谢你

这不是代码中的错误。这里发生的情况是,C#调试器正在尝试计算表达式,并从CLR中返回一个返回值
CORDBG_E_非法\u不安全点
CORDBG_E_非法IN_优化代码
。这些错误代码表示无法在当前上下文中计算表达式,并且与实际用户代码关系不大

Mike Stall对这些信息以及它们发生的原因有一个很好的分类,这可能值得一读

不幸的是,尽管你几乎无法解决这个问题。除非问题是您正在调试优化,否则在这种情况下,关闭优化将解决问题

观察:

根据您在上面发布的内容

公共日期时间到期日期{get;set;}

是自动属性(),不应与_durityDate连接


我遗漏了什么吗?

“对象很复杂”-通常是一种你做错了的迹象…使用
控制台。不在调试器中的WriteLine将不会给出该结果。您还没有描述不调试时出现的问题。不幸的是,您同意Austin的观点。尝试创建一个简单的、独立的项目,该项目包含一个具有上述
DateTime
属性的类,并确保它正常工作。我从来没有见过你用一个简单的属性(
DateTime
或其他什么)描述的问题,所以它可能是你的类的复杂性的一个奇怪的副产品。我的意思是它有很多很多属性,而不是复杂的属性。它不是真的-它只是存储值。项目中的其他对象确实正确存储了日期时间值。啊哈。现在我知道“funceval是邪恶的”,这似乎更清楚了。@Matt,funceval不是纯粹的邪恶。这就像一个善意的朋友,不可避免地一次又一次地把事情搞砸;)