Feedback

C# - Befindet sich eine Ganzzahl in einem bestimmten Bereich

Veröffentlicht von am 07.02.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
GFU-Schulungen  [Anzeige]

VB.NET Einführung

Die Schulung zeigt Ihnen, wie Sie einfache, benutzerorientierte Programme, die auf Datenbanken zugreifen, in VB.NET eigenständig entwickeln. 

VB.NET Aufbau

Sie verfügen nach der Schulung über fundierte Kenntnisse in der Arbeit mit objektorientierten Modellen in VB.NET und können wiederverwendbare Komponenten eigenständig erzeugen.

/// <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 08.02.2013:
Könnte man vielleicht für int als Erweiterungsmethode implementieren, Da müsste man keine eigene Klasse erstellen ;)
klaus_b schrieb am 08.02.2013:
Es ist eine Erweiterungsmethode. Du musst sie nur in eine deiner bestehenden Erweiterungsklassen packen ;-)
Jan Welker schrieb am 08.02.2013:
Sieh dir den Snippet noch mal genau an.
Koopakiller schrieb am 09.02.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 09.02.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 09.02.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!