2010-03-23 14 views
5

I już zostały programowania w Java i C wszystkich moich lat w uni, ale teraz uczę się C# i budowania małych aplikacji, i znalazłem kłopoty z tym:warunkowe lub w C#

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

Dostaję czerwoną podkreślenie dla tego warunkowego i naprawdę nie wiem dlaczego, ponieważ według tego, co widziałem, powinno być w porządku, ale tak nie jest. Czy jest coś, czego mi brakuje?

Dziękuję wszystkim z góry, Victor


Dziękuję wszystkim !!! Wściekłem się na to. Chodzi o to, że jestem Hiszpanem i jestem przyzwyczajony do posiadania klucza do rur | dokładnie w tym samym miejscu, gdzie | jest w amerykańskiej konfiguracji ... Widziałem to | dziwnie, ale myślałem, że to jest to samo ...

Dzięki za szybką odpowiedź !! Victor

+0

dokładny błąd co ty coraz opisujący "czerwoną underline"? – Marek

Odpowiedz

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

Modified dla poprawnego kodu, a także odpowiedzi na pytanie zadawane

+2

Jak już powiedziano w innych odpowiedziach, jeżeli parametr taksonuType jest rzeczywiście pustym odwołaniem, test wyrzuci ... – Seb

+1

Zaktualizowany kod, początkowo odpowiadający na zadane pytanie zamiast naprawiania pozostałej części kodu.Jeśli wyśle ​​aplikację, mogę to również skończyć;) – rrrr

4

nie wiem rodzaje taxonType i taxonID ale to powinno działać tak:

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

Co to "|"? Jesteś pewien, że jest to ta sama postać co "|"?

+1

Powinien być komentarzem. –

+1

@Filip czasami pytanie dostarcza lepszej odpowiedzi niż długiej, znoszonej odpowiedzi, szczególnie jeśli pierwotne pytanie było sformułowane tak niejasno ("Otrzymuję czerwone podkreślenie") – Marek

2

Wygląda na to, że używasz specjalnego znaku, który nie jest rozpoznawany jako domyślny znak rurki (|). Być może powinieneś sprawdzić ustawienia klawiatury?

2

Problem polega na tym, że jeśli parametr taksonu naprawdę ma wartość Null, użycie funkcji .Equals spowodowałoby wygenerowanie wyjątku NullReferenceException. idź z == zamiast równych

2

jeśli parametr taksonuType jest rzeczywiście pusty, spowoduje to wyjątek, ponieważ będziesz próbować wywołać metodę Equals.

jeśli powiedziałeś, że jeśli (taxOnType == null) || taksonuID == -1) nic ci nie jest.

1

Twój test na wartość null nie powinien używać wartości .Equals, ponieważ jeśli obiekt ma wartość NULL, próba dostępu do elementu spowoduje wyświetlenie NullReferenceException.

Zastosowanie:

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

Nie jest też jasne, czy używasz prawidłowego charakteru rury |, jak twoje pokazuje się jako ¦.

+0

Tak, to jest to, próbowałem równych, ponieważ taksonuType było ciągiem, ale moje pierwszą próbą był kod, który napisałeś. Ponieważ ciągle otrzymywałem czerwony podkreślenie, próbowałem różnych warunków, aby zobaczyć, czy źle się zrozumiałem ... Dzięki :) – vikitor

1

if (string.IsNullOrEmpty (taxonType) || taxonID < 0)

i uczynić takson jako struct

+0

String.IsNullOrEmpty jest tylko do użytku z ciągami. nie wiemy, jaki typ jest taksonuType. Ponadto String.IsNullOrEmpty zwróci wartość true, jeśli parametr taksonuType ma wartość "". Nie takie zachowanie chcemy. Zamiast tego użyj taksonuType == null. TaxonID <0 jest niewystarczające. –

+0

taksonuType jest ciągiem znaków, ponieważ używam go do utworzenia formularza wyszukiwania, ustawię parametr taksonuType na wartość null, jeśli nie wybrano parametru taksonuType, a parametr taksonuID wynosi -1, jeśli w formularzu nie ma identyfikatora taksonuID ... Chodzi o to, aby odwrócić przepływ sterowania. W każdym razie dziękuję za porady, pomaga mi to przemyśleć moją aplikację narzędziami, których wcześniej nie znałem lub nie myślałem :) – vikitor