2011-01-10 3 views
1

i avoir un géré objet C++équivalent à C# null managé C++

bool Test::TestStringNumber(String^ testData) 
{ 
    int len = testData->Length; 
    if(len > 0) return true; 
} 

me sers même fonction en C#

void Main() 
{ 
    Test t = new Test() 
    t.TestStringNumber(null); 
} 

mais plantage de l'application. pendant le débogage i observé en C++, il se présente comme « valeur indéfinie »

Alsó j'ai essayé de tester TestData avec nullptr en C++ code, et utilisé le code suivant, mais même accident

if(testData == nullptr && String::IsNullOrEmpty(testData)) 

* Une façon est de attraper l'exception dans le code géré C++ et retourner;

+0

Etes-vous sûr que le problème n'est pas simplement que dans le C++ vous ne le vérifiez pas pour 'null' avant d'appeler' -> Length'? –

+0

ouais je fais le même code pour vérifier nullptr – Kasma

+1

Appelez-vous 't.TestStringNumber (null);' en C# ou C++? Si c'est C#, vous pouvez vérifier 'nullptr'; Si c'est C++, vous devez vérifier null. – Gabe

Répondre

6
bool Test::TestStringNumber(String^ testData) 
{ 
    return !String::IsNullOrEmpty(testData); 
} 

Cela devrait fonctionner correctement? Pas que je vois le point dans votre code?