BigBastis Blog

Eine eigene Boolean.ToInt Methode bauen

Introduction

user

Sebastian Gross

Sebastian Gross arbeitet in Bielefeld als Softwareentwickler für .NET und Java im Bereich Web.Als Fan der .NET-Plattform lässt er sich kein Userguppen Treffen und Community Event im Raum OWL entgehen.Dabei hat er eine besondere Vorliebe für das ASP.NET MVC Framework und für das Test Driven Development (TDD) entwickelt.


LATEST POSTS

Handling too long scrollspy menus 10th June, 2015

Java: Create ZIP archive 23rd March, 2015

.NET

Eine eigene Boolean.ToInt Methode bauen

Posted on .

Lächerlich werden nun sicher alle von euch denken, eine ToInt Methode implementieren, die nichts anderes macht als den boolischen Wert in eine 1 umzuwandeln wenn true oder in eine 0 wenn false.

Im Grunde möchte ich euch hier auch zustimmen, denn das ist alles andere als schwer! Aber C# bietet uns hier viele Möglichkeiten um an unser Ziel zu kommen, deswegen habe ich mir gedacht schreibe ich es mal nieder.

Der Einfachste Ansatz ist sicherlich wie folgt:

public int ToInt(bool wert) {
    if (wert) {
        return 1;
    } else {
        return 0;
    }
}

Diese Funktion arbeitet natürlich tadellos und erfüllt ihren Zweck zu 100%. Aber es geht noch schöner und eleganter wie ich finde. So kann man sich die IF-Bedingung sparen und das Ganze etwas abkürzen:

public int ToInt(bool wert) {
    return Convert.ToInt32(wert);
}

Sehr schön, mehrere Zeilen gespart und das Ergebnis ist immer noch das Selbe! Doch das geht noch weiter, man kann sogar hier noch was einsparen, in dem man die tollen Features von C# nutzt:

public int ToInt(bool wert) {
   return wert ? 1 : 0;
}

Falls euch die Syntax nichts sagt, wir nutzen hier den „Conditional Operator„, der übrigens schon sehr lange existiert. Zu lesen wäre diese Zeile wie die IF-Bedingung aus dem ernsten Versuch. Wenn die Bedingung vor dem Fragezeichen erfüllt (true) ist dann soll die 1 zurückgegeben werden ansonsten die 0.

Ich finde diese Syntax lässt sich sehr gut lesen, und da ein Boolischer Wert nicht null sein kann laufen wir hier auch nicht Gefahr eine Exception auszulösen. Wenn wir das Ganze noch in eine Extension Method packen können wir das auch sehr bequem benutzen:

public static class Class1 {
    public static int ToInt(this bool wert) {
        return wert ? 1 : 0;
    }

    public static bool ToBool(this int wert) {
        return wert == 1 ? true : false;
    }

    public static void main() {
        bool var = true;

        if (var.ToInt() == 1) {
            //...
        }

        int var2 = 1;

        bool var3 = var2.ToBool();
    }
}
Ich habe hier auch den umgekehrten Weg mit aufgenommen (IntToBool), hier sollte man vielleicht noch erwähnen, dass nur bei einer 1 true zurückgegeben wird, ansonsten wird false abgeliefert egal welchen int Wert man übergibt!
Wie gesagt, das ist nichts Weltbewegendes, aber ich bin nicht gleich drauf gekommen den Conditional Operator hier zu verwenden daher der Blogpost und vielleicht bringt es ja den einen oder anderen von euch auf tolle Gedanken ;-)
profile

Sebastian Gross

http://www.bigbasti.com

Sebastian Gross arbeitet in Bielefeld als Softwareentwickler für .NET und Java im Bereich Web.Als Fan der .NET-Plattform lässt er sich kein Userguppen Treffen und Community Event im Raum OWL entgehen.Dabei hat er eine besondere Vorliebe für das ASP.NET MVC Framework und für das Test Driven Development (TDD) entwickelt.

Comments
user

Author bigbasti87

Posted at 22:49 21. Dezember 2010.

Bloggd: Eine eigene Boolean.ToInt Methode bauen – http://blog.bigbasti.com/eine-eigene-boo

user

Author Christian

Posted at 09:35 22. Dezember 2010.

Das ist auch ein schönes Thema für ein Einstellungsgespräch. So einfach, dass jeder Bewerber es lösen kann, aber viele verschiedene Möglichkeiten der Implementierung, dass man darüber diskutieren kann (z.B. Unit Tests?).

Leave a Reply

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

View Comments (2) ...
Navigation