Jag har varit ifrån VB.NET ett tag och har nu lite problem med dom mest simpla sakerna. Jag skulle nog vilja ha det till: Det där går inte. Uttrycket är alltså från början: Snabbt ur minnet skrev jag så här <b>Har jag gjort tankevurpa här ???</b> <b>Ja. I ditt exempel räcker det att Y är 9 för att det ska vara sant.</b>Jämföra flera värden
Hur jämför man enklast flera värden? Speciellt i kombination med Or.
X ska alltid vara 5, Y kan vara 7 eller 9:
<code>
'Lång variant
If X = 5 And Y = 7 Or X = 5 And Y = 9 Then
'Kort variant
If X = 5 And Y = (7 Or 9) Then
</code>
Jag får inte den korta varianten att fungera. Skriver jag fel eller ska det helt enkelt inte gå att göra så?
ThomasSv: Jämföra flera värden
If X = 5 And (Y = 7 Or Y = 9) Then
JohanSv: Jämföra flera värden
X = 5 And Y = (7 Or 9)
Delen (7 Or 9) beräknas först och resultatet av den beräkningen blir 15. (Operatorn "Or" är en bitoperator.) Därefter är följande uttryck kvar att beräkna:
X = 5 And Y = 15
Dvs, ditt uttryck kommer att vara sant om X är 5 och Y är 15 vilket inte var vad du ville kontrollera med din If-sats. Använd paranteserna som Johan föreslår istället.
Ett annat tips med .NET 3.5 är att om du har många värden i en uppräkningsbar lista, t ex en array och du vill veta om variablerna har ett värden som finns i arrayerna kan det också vara praktiskt med något i den här stilen (du kan fylla på med fler kommatecken och värden innanför klamrarna):
Dim X_Values As Integer() = { 5 }
Dim Y_Values As Integer() = { 7, 9 }
If X_Values.Contains(X) And Y_Values.Contains(Y) Then
...Sv: Jämföra flera värden
<code>
If X = 5 And Y = 7 Or Y = 9 Then MsgBox "sant"
</code>
Har jag gjort tankevurpa här ???Sv:Jämföra flera värden
Ja. I ditt exempel räcker det att Y är 9 för att det ska vara sant.
Ett förtydligande av vad koden egentligen gör:
<code>
If (X = 5 And Y = 7) Or (Y = 9) Then MsgBox "sant"
</code>
ThomasSv: Jämföra flera värden
Ja djä... Nu har du haft rätt en gång idag ;-)