ERLEDIGT
NEIN
NEIN
ANTWORTEN
3
3
ZUGRIFFE
216
216
EMPFEHLEN
-
Hi,
hab mal eine kleine simple frage,
kann man in c# einer variablen einen festen werte bereich zuteilen?
zB
Radius von 0 bis 2^32
wenn dann Radius = 1 ist, geschieht folgendes
Radius - 4 = 0
oder
Grad von 0 bis 359
wenn Grad = 359 ist
Grad + 2 = 1
ich weiß das dass zwei unterschiedliche Fälle sind, einmal mit überlauf und einmal ohne.
klar könnte man es auch mit einer if Anweisung regeln, aber jedes mal diese Überprüfung einzufügen macht den Code unübersichtlich.
ich hab schon an Bit operationen gedacht
wie ist es wenn man einen unsign int hat, und einen kleineren Wert als 0 bekommt, fängt er dann nicht wieder beim größten Wert an?
für C++ würde mich das auch intressieren
gruß
-
-
12.08.10 12:00 #3Izzy84 Tutorials.de Gastzugang
Ich denke da wird dir nur die if-Abfrage bleiben.
Du musst die ja auch nicht an jeder Stelle einfügen.
Erstell eine Methode die die Überprüfung übernimmt und entsprechend reagiert (Überlauf ja/nein) und diese Methode kann dann ja immer aufgerufen werden. MMn ohnehin schöner als die selbe Abfrage an 50Stellen stehen zu haben.
Aber ich kenne das .NET Framework auch nicht auswendig, vlt kennt ja jemand eine bessere Möglichkeit
-
12.08.10 12:09 #4
- Registriert seit
- Jun 2005
- Beiträge
- 7.983
Hi.
Es gibt keine Möglichkeit einen Wertebereich festzulegen (so das der Compiler diesen automatisch überprüft bzw. einhält).
Für den 2. Fall verwendet man üblicherweise Modulo Operationen:
Code cpp:1 2
int i = 359; i = (i + 2) % 360;
\edit: Man kann sich z.B. eine Struktur dermaßen erstellen:
Verwendung:Code csharp:1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
public struct Grad { private int _value; public Grad(int i) { _value = i % 360; } public static implicit operator int(Grad d) { return d.Value; } public static implicit operator Grad(int i) { return new Grad(i); } public int Value { get { return _value; } set { _value = value % 360; } } public override string ToString () { return Value.ToString(); } }
GrußCode csharp:1 2 3 4
Grad g = 359; g += 2; println(g); // == 1
Geändert von deepthroat (12.08.10 um 12:26 Uhr)
If at first you don't succeed, try again. Then quit. No use being a damn fool about it.
Ähnliche Themen
-
Es darf nur einen geben!
Von XChris im Forum .NET CaféAntworten: 4Letzter Beitrag: 10.03.10, 11:20 -
Button einen Wert geben
Von zuckerbrini im Forum HTML & XHTMLAntworten: 3Letzter Beitrag: 29.01.09, 21:29 -
<div>-Element einen Focus geben
Von Geflügel im Forum Javascript & AjaxAntworten: 4Letzter Beitrag: 01.09.07, 11:03 -
Includes geben keine URL-Variablen weiter
Von Firestorm696 im Forum PHPAntworten: 6Letzter Beitrag: 04.03.06, 17:37





Zitieren


Login




