Variablen einen Wertebereich geben

FJK

Erfahrenes Mitglied
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ß
 
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 :)
 
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:
C++:
int i = 359;
i = (i + 2) % 360;

\edit: Man kann sich z.B. eine Struktur dermaßen erstellen:
C#:
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();
	}
}
Verwendung:
C#:
Grad g = 359;
g += 2;

println(g); // == 1
Gruß
 
Zuletzt bearbeitet:

Neue Beiträge

Zurück