相关疑难解决方法(0)

这= = null //怎么可能?

最近我遇到了一些我应用程序的奇怪行为.它主要是在C#中开发的,但CLI/C++也用于实现更好的性能.我在TimeSpan比较中以一个非常简单的方法获得了System.NullReferenceException:

TimeSpan _timestamp;
void UpdateFrame(TimeSpan timestamp)
{
    if(TimeSpan::Equals(_timestamp, timestamp) == false) 
Run Code Online (Sandbox Code Playgroud)

很明显,这个表达式中使用的唯一引用是隐含的(this._timestamp).我添加了一个断言语句,结果证明这实际上是空的.经过短暂的调查,我设法准备了一个简短的程 它是C++/CLI.

using namespace System;
using namespace System::Reflection;

public class Unmanaged
{
public:
    int value;
};

public ref class Managed
{
public:
    int value;

    Unmanaged* GetUnmanaged()
    {
        SampleMethod();
        return new Unmanaged();
    }

    void SampleMethod()
    {
        System::Diagnostics::Debug::Assert(this != nullptr);
        this->value = 0;
    }
};

public ref class ManagedAccessor
{
public:
    property Managed^ m;
};

int main(array<System::String ^> ^args)
{
    ManagedAccessor^ ma = gcnew ManagedAccessor();
    // Confirm that ma->m == null …
Run Code Online (Sandbox Code Playgroud)

.net c++-cli visual-c++

22
推荐指数
2
解决办法
3088
查看次数

标签 统计

.net ×1

c++-cli ×1

visual-c++ ×1