Vraag Objectreferentie niet ingesteld op een exemplaar van een object. [duplicaat]


Deze vraag heeft hier al een antwoord:

Ik krijg deze foutmelding steeds wanneer ik het programma start.

Objectreferentie niet ingesteld op een exemplaar van een object.   Beschrijving: er is een niet-verwerkte uitzondering opgetreden tijdens de uitvoering van het huidige webverzoek.   Bekijk de stacktracering voor meer informatie over de fout en de oorsprong in de code.   Uitzonderingsdetails: System.NullReferenceException: objectreferentie is niet ingesteld op een instantie van een object.

Source Error:

Line with error:

Line 156:        if (strSearch == "" || strSearch.Trim().Length == 0)

Wat is de juiste manier om te schrijven?


73
2017-11-21 03:01


oorsprong


antwoorden:


De juiste manier in .NET 4.0 is:

if (String.IsNullOrWhiteSpace(strSearch))

De String.IsNullOrWhiteSpace methode die hierboven wordt gebruikt, is gelijk aan:

if (strSearch == null || strSearch == String.Empty || strSearch.Trim().Length == 0) 
// String.Empty is the same as ""

Referentie voor IsNullOrWhiteSpace-methode

http://msdn.microsoft.com/en-us/library/system.string.isnullorwhitespace.aspx

Geeft aan of een opgegeven reeks niets is, leeg of bestaat   alleen van witruimtetekens.

In eerdere versies kon je zoiets als dit doen:

if (String.IsNullOrEmpty(strSearch) || strSearch.Trim().Length == 0)

De String.IsNullOrEmpty methode die hierboven wordt gebruikt, is gelijk aan:

if (strSearch == null || strSearch == String.Empty)

Dat betekent dat je nog steeds moet controleren op je "IsWhiteSpace" -case met de .Trim().Length == 0 zoals in het voorbeeld.

Referentie voor IsNullOrEmpty-methode

http://msdn.microsoft.com/en-us/library/system.string.isnullorempty.aspx

Geeft aan of de opgegeven reeks niets is of een lege tekenreeks.

Uitleg:

Je moet ervoor zorgen strSearch (of welke variabele dan ook) is dat niet null voordat je het afleidt met behulp van het punt-teken (.) - d.w.z. voordat u het doet strSearch.SomeMethod() of strSearch.SomeProperty je moet dat controleren strSearch != null.

In uw voorbeeld wilt u ervoor zorgen dat uw string een waarde heeft, wat betekent dat u de string wilt verzekeren:

  • Is niet nul
  • Is dit niet de lege reeks (String.Empty / "")
  • Is niet alleen witruimte

In de bovenstaande gevallen moet u de "Is it null?" case eerst, dus het gaat niet verder om de andere gevallen (en fouten) te controleren wanneer de string is null.


98
2017-11-21 03:02



Alle versies van .Net:

if (String.IsNullOrEmpty(strSearch) || strSearch.Trim().Length == 0)

.Net 4.0 of hoger:

if (String.IsNullOrWhitespace(strSearch))

22
2017-11-21 03:05



strSearch in dit geval is waarschijnlijk null (niet simpelweg leeg).

Probeer het te gebruiken

String.IsNullOrEmpty(strSearch) 

als je alleen probeert te bepalen of de string geen inhoud heeft.


5
2017-11-21 03:03



Ik weet dat dit ongeveer een jaar geleden werd gepubliceerd, maar dit is voor gebruikers voor toekomstige referentie.

Ik kwam een ​​soortgelijk probleem tegen. In mijn geval (ik zal proberen om het kort te houden, laat het me weten als je meer details wilt), ik probeerde te controleren of een string leeg was of niet (string is het onderwerp van een e-mail). Het retourneerde altijd dezelfde foutmelding, ongeacht wat ik deed. Ik wist dat ik het goed deed, maar er bleef dezelfde foutmelding achter. Toen drong het tot me door dat ik controleerde of het onderwerp (tekenreeks) van een e-mail (instantie / object), wat als de e-mail (exemplaar) al een nul was op de eerste plaats. Hoe kon ik controleren op een onderwerp van een e-mail, als de e-mail al een nul is ... ik heb gecontroleerd of de e-mail leeg was, het werkte prima.

tijdens het controleren op het onderwerp (tekenreeks) heb ik de methoden IsNullorWhiteSpace (), IsNullOrEmpty () gebruikt.

if (email == null)
{     
     break;    
}
else
{    
     // your code here    
}

4
2017-11-01 19:07



Ik wil MattMitchell's antwoord uitbreiden door te zeggen dat je een uitbreidingsmethode voor deze functionaliteit kunt maken:

public static IsEmptyOrWhitespace(this string value) {
    return String.IsEmptyOrWhitespace(value);
}

Dit maakt het mogelijk om te bellen:

string strValue;
if (strValue.IsEmptyOrWhitespace())
     // do stuff

Voor mij is dit een stuk schoner dan het noemen van de statische String functie, terwijl nog steeds NullReference safe!


1
2017-09-20 08:13