我不明白为什么当传递的变量在堆上时跟踪引用没有完成它的工作。这是代码:
ref class DataContainer
{
public:
property DateTime Time;
};
DataContainer^ dc = gcnew DataContainer ();
DateTime timeOnStack;
// first call with output variable on the stack
bool timeParsed = DateTime::TryParseExact ("20160104132500184", "yyyyMMddHHmmssfff", CultureInfo::InvariantCulture, DateTimeStyles::None, timeOnStack);
// second call with output variable on the heap
timeParsed = DateTime::TryParseExact ("20160104132500184", "yyyyMMddHHmmssfff", CultureInfo::InvariantCulture, DateTimeStyles::None, (dc->Time));
第一个TryParseExact
调用使用本地初始化变量timeOnStack
来放置解析的 DateTime 值按预期工作并正确设置解析日期:调用timeOnStack.ToString ()
返回"1/4/2016 1:25:00 PM"
而第二个调用即使返回true
它也没有设置正确的值dc->Time
:调用dc->Time.ToString ()
返回"1/1/0001 12:00:00 AM"
我在这里没有看到什么?