C# switch probléma?
Van egy algoritmusom, amiben switchet szeretnék használni, az alábbi módon. A value lehet 300;100 vagy egy random érték 201 és 299 között.
switch (value / 100)
{
case 1:
m.value = 0;
break;
case 2:
m.value = value % 200;
break;
case 3:
m.value = 100;
break;
default:
Console.WriteLine("Error");
break;
}
Ha ezt használom, az algoritmus nem működik. Ha viszont ezt:
m.value = value;
akkor minden tokeletesen mukodik.
A value változóval csak egyszerű összehasonlításokat végzek (<,>).
Egy fontos dolog, amit megjegyeznék, hogy ha ezen a switchen múlik az m.value inicializálása, és később nem ellenőrzöd akkor a default ágon mindenképpen kezdj vele valamit, vagy dobj egy ArgumentOutOfRangeException-t mert máskülönben lehet, hogy nem tudod lefordítani a programot. Ugye nem derül ki a kérdésedből, hogy pontosan mi a probléma.
"Ha ezt használom, az algoritmus nem működik. Ha viszont ezt:
m.value = value; "
Hol? Melyik sorban? Vagy úgy érted, hogy az egész switch-case helyett? Mert akkor lehet pont az a probléma, amit előbb leírtam.
Mit jelent az, hogy "nem működik"? Mi a jelenség, mit tapasztalsz?
Ha a value változó egész típusú, akkor a (value / 100) egész osztás lesz. Ennek fényében ha a value 100, akkor m.value nulla lesz. Ha a value 201 és 299 közötti, akkor az m.value ugye 1 és 99 közötti lesz a modulo miatt. Ha pedig a value 300, akkor az m.value 100 lesz. Összességében tehát az m.value 0 és 100 közötti lesz.
Kérdés, mi az az m és milyen deklarációja van? Ez egy struct? Vagy egy objektum?
Nem írtad le a hiba lényegét, így nehéz segíteni.
Probléma megoldodott, köszönöm a válaszokat.
De legalább a pofád ne lenne ekkora hozzá, az isten verjen meg...
Ver folyamatosan az olyan emberekkel, mint te.
Kapcsolódó kérdések:
Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!