Sprache: C#
Oft muss überprüft werden, ob sich ein Wert innerhalb eines bestimmten Bereichs befindet. Z.B.:
[code]var value = 270;
if(value < 0 || value > 255)
// falsche Bereich[/code]
Wesentlich einfacher geht das mit einer Erweiterungsmethode:
[code]if(!value.InRangeOf(0, 255))
// falscher Bereich[/code]
/// <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;
}
/// <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;
}
Alte URL:
/snippet/befindet-sich-eine-ganzzahl-in-einem-bestimmten-bereich/1678
Könnte man vielleicht für int als Erweiterungsmethode implementieren, Da müsste man keine eigene Klasse erstellen 😉
Es [b]ist[/b] eine Erweiterungsmethode. Du musst sie nur in eine deiner bestehenden Erweiterungsklassen packen 😉
Sieh dir den Snippet noch mal genau an.
Ä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:
[code]return value >= lowerBound && value <= upperBound;[/code]
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.
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 ^^