2011-03-31 13 views
5

En un conjunto C#, que tiene una función de tomar un DateTime anulable como parámetro:Llamar C# desde C++: cómo pasar nullptr a DateTime?

public void DoSomething(DateTime? timestamp); 

Ahora quiero llamar a este método de C++/CLI:

MyClass->DoSomething(nullptr); 

Esto no se compilará. En cambio, el compilador de C++ imprimirá un mensaje de error. Nullptr no se puede convertir a System :: Nullable.

Entonces, ¿cómo paso nullptr de C++ a un DateTime nulo?

Respuesta

4

Nullable es un valor de tipo y C++/CLI no proporciona la magia en tiempo de compilación para ello. Es necesario ir a la ruta explícita:

System::Nullable<System::DateTime> dtnull; 
MyClass->DoSomething(dtnull); 

Por supuesto, también se puede utilizar aquí una temporal:

MyClass->DoSomething(System::Nullable<System::DateTime>());