Feedback

C# - Befindet sich eine Ganzzahl in einem bestimmten Bereich

Veröffentlicht von am 2/7/2013
(3 Bewertungen)
Oft muss überprüft werden, ob sich ein Wert innerhalb eines bestimmten Bereichs befindet. Z.B.:

var value = 270;

if(value < 0 || value > 255)
// falsche Bereich


Wesentlich einfacher geht das mit einer Erweiterungsmethode:

if(!value.InRangeOf(0, 255))
// falscher Bereich
/// <summary>
/// Überprüft, ob sich der angegebene Wert innerhalb
/// des angegebenen Bereichs befindet.
/// </summary>
/// <param name="value">Der zu überprüfende Wert.</param>
/// <param name="lowerBound">Der untere Grenzwert des Bereichs.</param>
/// <param name="upperBound">Der obere Grenzwert des Bereichs.</param>
/// <returns>
/// <c>true</c>, wenn sich der Bereich innerhalb des angegebenen
/// Bereichs befindet, anderenfalls <c>false</c>.
/// </returns>
/// <remarks>Keine Anmerkungen</remarks>
public static bool InRangeOf(this int value, int lowerBound, int upperBound)
{
    return value > lowerBound - 1 && value < upperBound + 1;
}

6 Kommentare zum Snippet

Koopakiller schrieb am 2/8/2013:
Könnte man vielleicht für int als Erweiterungsmethode implementieren, Da müsste man keine eigene Klasse erstellen ;)
klaus_b schrieb am 2/8/2013:
Es ist eine Erweiterungsmethode. Du musst sie nur in eine deiner bestehenden Erweiterungsklassen packen ;-)
Jan Welker schrieb am 2/8/2013:
Sieh dir den Snippet noch mal genau an.
Koopakiller schrieb am 2/9/2013:
Ähm, ok, da hab ich wohl das this übersehen :(

Eine kleine Sache aber noch: Wenn man es für double/float/... implementieren möchte, dann sollte man es eher so abfragen:
return value >= lowerBound && value <= upperBound;
klaus_b schrieb am 2/9/2013:
Hi Koopakiller,

das kannst du gerne tun.
Allerdings sind Vergleiche mit double/float nicht ganz ohne. Deshalb habe ich mich auf Integer beschränkt. Einen Vergleich mit long (int64) könntest du auch auf diesem Weg lösen.
Koopakiller schrieb am 2/9/2013:
Schon klar, wollte es auch nur erwähnt haben, falls sich jemand wundert warum es nicht einfach so mit Kommazahlen funktionieren will ;)

PS: Im Durchschnitt spart meine Methode 1 Millisekunde pro 3 Millionen Ausführungen, ist also egal ^^
 

Logge dich ein, um hier zu kommentieren!