Domanda

Possibile duplicato:
Espressione di lambda: == vs. .equals ()

Ciao,

Uso molto, la parola chiave è uguale per confrontare le variabili e altre cose.

ma

wines = wines.Where(d => d.Region.Equals(paramRegion)).ToList();

restituire un errore in fase di esecuzione quando nella regione dei dati è nullo

Ho dovuto usare il codice

wines = wines.Where(d => d.Region == paramRegion).ToList();

Per sbarazzarsi dell'errore.

Qualche idea per cui questo solleva un errore?

Grazie.

È stato utile?

Soluzione

Non è possibile chiamare metodi di istanza con riferimento a oggetti null. Dovresti verificare che la regione non sia nulla prima di chiamare i suoi metodi di istanza.

wines = wines.Where(d => d.Region != null && d.Region.Equals(paramRegion)).ToList();

Il d.Region == paramRegion è (molto probabilmente) ampliato a object.Equals(d.Region, paramRegion) e quel metodo statico verifica se i parametri sono nulli o meno prima di chiamare il metodo equals ().

Puoi anche scrivere la condizione in ordine diverso se sai che il paramRegion non può essere nullo.

Debug.Assert(paramRegion != null);
wines = wines.Where(d => paramRegion.Equals(d.Region)).ToList();

Altri suggerimenti

Fondamentalmente se

d.Region == null

Quindi qualsiasi metodo chiamata, eccolo qui È uguale a(...) Su questo aumenterà un'eccezione poiché non è inizializzato.

L'uso può usare:

paramRegion.Equals(d.Region)
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top