ho funzione in C++ o meno così:Come convertire argomento puntatore opzionale da codice C++ a C#
// C++
bool Foo(int* retVal = NULL)
{
// ...
if (retVal != NULL)
*retVal = 5;
// ...
return true;
}
E posso utilizzare le funzioni in due modi:
int ret;
Foo(&ret);
Foo();
Quando scrivo il codice in C# ho usato parola chiave ref:
// C#
bool Foo(ref int retVal = null)
{
// ...
if (retVal != null)
{
retVal = 5;
}
// ...
return true;
}
ma compilatore detto:
Un parametro ref o out non può avere un valore predefinito.
Come posso risolvere questo problema?
È possibile utilizzare un tipo nullable come 'int?'. Vedi: https://msdn.microsoft.com/en-us/library/2cf62fcy.aspx – NathanOliver
@NathanOliver Si noti che mentre questo funzionerà con 'ref int', per parametri come' ref string' questo non funziona – xanatos
@ xanatos non sono stringhe annullabili di default in C# quindi non dovrai usare '?'? – NathanOliver