2010-03-23 16 views
5

Sono stato di programmazione in Java e C tutti i miei anni di Uni, ma ora sto imparando C# e la costruzione di una piccola applicazione, e ho trovato problemi con questo:condizionali o in C#

if (taxonType.Equals(null) ¦¦ taxonID == -1) 

Ricevo una sottolineatura rossa per questo condizionale, e non so davvero perché, perché secondo quello che ho visto dovrebbe essere ok, ma non lo è. C'è qualcosa che mi manca?

Grazie a tutti in anticipo, Victor


Grazie a tutti !!! Mi stavo arrabbiando per questo. Il fatto è che sono spagnolo e sono abituato ad avere la chiave pipe | esattamente nello stesso posto in cui | è nella configurazione americana ... stavo vedendo questo | strano, ma pensavo fosse lo stesso ...

Grazie per la risposta veloce !! Victor

+0

cosa errore esatto stai ottenendo che descrive la "sottolineatura rossa"? – Marek

risposta

11
if (taxonType == null || taxonID == -1) 

Modificato il codice corretto e rispondendo alla domanda ha chiesto

+2

Come già detto in altre risposte, se taxonType è in realtà un riferimento null, il test genererà ... – Seb

+1

Codice aggiornato, originariamente rispondeva alla domanda posta anziché correggere il resto del codice.Se invia l'applicazione, posso finire anch'io;) – rrrr

4

Non conosco i tipi di taxonType e taxonID ma dovrebbe funzionare in questo modo:

if (taxonType == null || taxonID == -1) 
5

Cosa è "|"? Sei sicuro che sia lo stesso carattere di '|'?

+1

Dovrebbe essere un commento. –

+1

@Filip a volte una domanda fornisce una risposta migliore di una risposta a lungo termine, soprattutto se la domanda originale è stata formulata in modo non chiaro ("Ricevo la sottolineatura rossa") – Marek

2

Sembra che si stia utilizzando un carattere speciale, che non è riconosciuto come carattere di pipe predefinito (|). Forse dovresti controllare le impostazioni della tastiera?

1

È necessario utilizzare "||" invece di "||".

2

il problema è che se taxonType è realmente Null, quindi utilizzando la funzione .Equals su di esso verrà generata una NullReferenceException. vai con == invece di uguale a

2

se taxonType è in realtà null questo genererà un'eccezione perché tenterai di chiamare il suo metodo Equals.

se hai detto se (taxOnType == null) || taxonID == -1) starai bene.

1

Il test per null non deve essere utilizzato .Equals, poiché se l'oggetto è nullo, il tentativo di accesso a un membro genererà un NullReferenceException.

Usa:

if (taxonType == null || taxonID == -1) 

Inoltre non è chiaro se si utilizza il carattere pipe corretta |, come il vostro si presenta come ¦.

+0

Sì, è così, ho provato gli uguali perché taxonType era una stringa, ma il mio il primo tentativo è stato il codice che hai scritto. Mentre continuavo a ricevere la sottolineatura rossa, ho provato diversi tipi di condizioni per vedere se stavo sbagliando ... Grazie :) – vikitor

1

se (String.IsNullOrEmpty (taxonType) || taxonID < 0)

e fare taxon come una struct

+0

String.IsNullOrEmpty è solo per uso con le stringhe. non sappiamo di che tipo taxonType sia. Inoltre String.IsNullOrEmpty restituirebbe true se taxonType è "". Questo non è il comportamento che vogliamo. Utilizza invece taxonType == null. TaxonID <0 non è sufficiente. –

+0

taxonType è una stringa, poiché la sto usando per creare un modulo di ricerca, ho impostato taxonType su null se non ci sono taxonType selezionati e taxonID è -1 se non ci sono taxonID selezionati nel modulo ... È solo per deviare il flusso di controllo. Grazie per i consigli comunque, mi aiuta a ripensare alla mia applicazione con strumenti che non conoscevo o pensavo prima :) – vikitor