1. #1
    Avatar von Snees
    Registriert seit
    18.11.2011
    Beiträge
    1.001
    Thanked 590 Times in 319 Posts

    Standard [C#] Klassenbeispiel

    Hallo, ich beschäftige mich momentan mit C# und habe eine kleine Klasse geschrieben, um die Arbeit damit zu veranschaulichen.

    Eventuell kann es ja jemand von euch gebrauchen.

    Downloader.cs
    Code:
    /* 
     * Eine einfache Klasse
     * am Beispiel eines Webclienten mit der DownloadString() Methode
     * Autor: Nico @ U-Hacks.net
    */
    
    using System.Net;
    
    namespace ConsoleApplication1
    {
        class Downloader
        {
            /// <summary>
            /// Quelltext wird in diesem String gespeichert
            /// </summary>
            public string Quelltext { get; set; }
    
            /// <summary>
            /// Downloader
            /// </summary>
            public Downloader()
            {
            }
    
            /// <summary>
            /// Quelltext herunterladen und in einer Variablen speichern
            /// </summary>
            /// <param name="_url">Die URL der Website</param>
            /// <returns></returns>
            public string get_quelltext(string _url)
            {
                WebClient client = new WebClient();
                try
                {
                    Quelltext = client.DownloadString(_url);
                }
                catch
                {
                    Quelltext = "Es ist ein Fehler aufgetreten. Überprüfen Sie Ihre Eingabe.";
                }
                return Quelltext;
            }
        }
    }
    Program.cs
    Code:
    /* 
     * Eine einfache Klasse
     * am Beispiel eines Webclienten mit der DownloadString() Methode
     * Autor: Nico @ U-Hacks.net
    */
    
    using System;
    
    namespace ConsoleApplication1
    {
        class Program
        {
            static void Main(string[] args)
            {
                Downloader DL = new Downloader();
    
                Console.WriteLine("Bitte die URL eingeben. (z.B. http://google.de)");
                string input = Console.ReadLine();
    
                string quelltext = DL.get_quelltext(input);
    
                /* Alternativ kann man den Quelltext auch z.B. in einer Windows Forms Anwendung
                 * in einer RichTextBox oder MessageBox oder wie auch immer anzeigen lassen */
                Console.WriteLine(quelltext);
                Console.ReadKey();
            }
        }
    }
    Der Code dürfte sich von selber erklären, falls nicht, einfach fragen :}

  2. #2

    Registriert seit
    09.11.2011
    Beiträge
    121
    Thanked 129 Times in 46 Posts

    Standard AW: [C#] Klassenbeispiel

    Warum hast du den Quelltext in einer globalen Variable, während du eine Funktion hast, die dir den Quelltext sofort zurückgibt (String)?

    MfG

  3. #3
    Avatar von Snees
    Registriert seit
    18.11.2011
    Beiträge
    1.001
    Thanked 590 Times in 319 Posts

    Standard AW: [C#] Klassenbeispiel

    Ist mir auch aufgefallen, das liegt daran, dass ich die Klasse vorher etwas anders gestaltet habe, sie dann aber umgeschrieben habe

  4. #4
    Avatar von patlux
    Registriert seit
    26.10.2011
    Beiträge
    1.196
    Thanked 1.596 Times in 725 Posts
    Blog Entries
    2

    Frage AW: [C#] Klassenbeispiel

    Laut den Microsoft-Richtlinien sollte der Anfangsbuchstabe bei einer Methode immer Groß geschrieben werden. Nennt man auch Pascal-Schreibweise.
    Auch sollte man - meiner Meinung nach - Unterstriche "_" in Methodennamen vermeiden.

    In deinem Beispiel sollte "get_quelltext" also "GetQuelltext" heißen.

    Siehe


    Sind aber nur Kleinigkeiten.
    In Java würde es passen.

  5. The Following User Says Thank You to patlux For This Useful Post:

    Snees (20.11.2011)

  6. #5
    Avatar von Mentos
    Registriert seit
    18.11.2011
    Beiträge
    451
    Thanked 498 Times in 240 Posts

    Standard AW: [C#] Klassenbeispiel

    Hm. Ich würde es nicht GetQuelltext nennen sondern GetSource.
    „Es sind nicht unsere Fähigkeiten, die zeigen, wer wir wirklich sind, es sind unsere Entscheidungen.“
    - Albus Dumbledore, Harry Potter 2


    /guestchat registerGuest

  7. #6

    Registriert seit
    09.11.2011
    Beiträge
    121
    Thanked 129 Times in 46 Posts

    Standard AW: [C#] Klassenbeispiel

    Und ich würde nicht jedes mal ein neues WebClient Objekt instanzieren, sondern nur 1x im Konstruktor, Schönheitssache.

    MfG

  8. The Following 2 Users Say Thank You to Brainy For This Useful Post:

    patlux (20.11.2011), Snees (20.11.2011)

  9. #7

    Registriert seit
    19.11.2011
    Beiträge
    496
    Thanked 412 Times in 268 Posts

    Standard AW: [C#] Klassenbeispiel

    In Java würde es passen.
    Nee.
    In Java sollten Variablen und Methoden mit einem Kleinbuchstaben beginnen, in "camelCase" Schreibweise, wofür du bereits ein Beispiel geliefert hast. getSource().
    Für die öffnende geschweifte Klammer { verschwendet man auch keine ganze Zeile.

    Code:
    try
    {
      Quelltext = client.DownloadString(_url);
    }
    catch
    {
      Quelltext = "Es ist ein Fehler aufgetreten. Überprüfen Sie Ihre Eingabe.";
    }
    Ich würde hier catch nicht argumentslos verwenden, sondern gezielt auf mögliche Exceptions eingehen.

    Code:
    /// <summary>
    /// Downloader
    /// </summary>
    public Downloader()
    {
    }
    Da hier nichts passiert, kann der Standardkonstruktor ganz weggelassen werden. Der Compiler erzeugt sowieso einen.

    Was ich auch nicht schön finde, dass es quasi zwei Getter für Quelltext gibt. Ich würde entweder auf die Variable verzichten, oder die Methode get_quelltext() umschreiben, dass sie die Variable nur initialisiert aber nichts zurückgibt. Bei ersterem würde die Variable quelltext in der Main-Methode auch Sinn ergeben. Die, bzw. Quelltext in Downloader ist überflüssig.

    Edit: Sorry, der letzte Teil wurde bereits erwähnt, habe es nicht gelesen.
    Geändert von Mr. White (20.11.2011 um 19:06 Uhr)

  10. #8
    Avatar von Ta1lor
    Registriert seit
    15.11.2011
    Beiträge
    767
    Thanked 832 Times in 435 Posts

    Standard AW: [C#] Klassenbeispiel

    Ich verstehe nicht ganz wieso du die Quelltext Variable public deklariert hast, wo ist da der Sinn? Oder macht man das in C# so?

  11. #9

    Registriert seit
    19.11.2011
    Beiträge
    496
    Thanked 412 Times in 268 Posts

    Standard AW: [C#] Klassenbeispiel

    Zitat Zitat von Ta1lor Beitrag anzeigen
    Ich verstehe nicht ganz wieso du die Quelltext Variable public deklariert hast, wo ist da der Sinn? Oder macht man das in C# so?
    Er war tippfaul. Das geht auf die Getter und Setter zurück.
    Die Variable hätte als private deklariert werden können und dann irgendwo öffentliche Getter und Setter definieren.
    Das was er gemacht hat, ist die Kurzschreibweise.

Ähnliche Themen

  1. [C#] Einfaches Klassenbeispiel
    Von Snees im Forum Showroom
    Antworten: 7
    Letzter Beitrag: 17.11.2011, 13:49
Diese Seite nutzt Cookies, um das Nutzererlebnis zu verbessern. Klicken Sie hier, um das Cookie-Tracking zu deaktivieren.