tutorials.de Buch-Aktion 05/2012
ERLEDIGT
NEIN
ANTWORTEN
5
ZUGRIFFE
172
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    Avatar von bolshi
    bolshi bolshi ist offline Mitglied Silber
    Registriert seit
    Mar 2004
    Ort
    berlin
    Beiträge
    63
    Hallo,
    ich arbeite grad ein Tutorial durch, bei dem in einer Klasse zwei Konstruktoren existieren. Einer parameterlos, in dem die Variablen mit "leer" initialisiert werden. Ein zweiter mit zwei Parametern:

    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    
     
    namespace WindowsFormsApplication1.DataAccess
    {
        /// <summary>
        /// The DbConnection class defines information for connections to SQL databases.
        /// </summary>
        class DbConnection
        {
            private string sName;
            private string sConnectionString;
            
     
            /// <summary>
            /// Creates a new instance of the DbConnection class.
            /// </summary>
            public DbConnection()
            {
                sName = "";
                sConnectionString = "";
            }
     
     
            /// <summary>
            /// Creates a new instance of the DbConnection class.
            /// </summary>
            /// <param name="name">The displayed name of the connection.</param>
            /// <param name="connectionString">The connection string to be used.</param>
            public DbConnection(string name, string connectionString)
            {
                sName = name;
                sConnectionString = connectionString;
            }
     
     
            /// <summary>
            /// Gets or sets the name of the database connection.
            /// </summary>
            public string Name
            {
                get { return sName; }
                set { sName = value; }
            }
     
     
            /// <summary>
            /// Gets or sets the connection string.
            /// </summary>
            public string ConnectionString
            {
                get { return sConnectionString; }
                set { sConnectionString = value; }
            }
        }
    }

    Ist der zweite insofern essentiell, um die Werte aus den Properties in den Variablen zu bekommen?

    Gruß
    ingo
     

  2. #2
    engelmarkus engelmarkus ist offline Mitglied Brokat
    Registriert seit
    Sep 2007
    Beiträge
    473
    Also so weit ich das sehe, ist der 2. Konstruktor mit den Parametern nicht notwendig. Er stellt lediglich eine Arbeitserleichterung da. Wenn dieser nicht da wäre, dann müsstest du halt zuerst den parameterlosen Konstruktor aufrufen und dann die beiden Eigenschaften in zwei weiteren Zeilen einstellen. Diese Arbeit kannst du dir durch den 2. Konstruktor sparen.
    Eventuell kannst du die beiden Eigenschaften sogar verkürzen, da du darin sowieso nichts besonderes machst:

    Code :
    1
    
    public string Name { get; set; }

    Dies macht dann sogar die beiden privaten Variablen oben überflüssig.
     

  3. #3
    Avatar von bolshi
    bolshi bolshi ist offline Mitglied Silber
    Registriert seit
    Mar 2004
    Ort
    berlin
    Beiträge
    63
    Also:

    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    
     
            public DbConnection()
            {
                sName = "";
                sConnectionString = "";
                sName = name;
                sConnectionString = connectionstring;
            }

    Habe ich dich richtig verstanden oder meinst du, dass es zwei Standardkonstruktoren mit unterschiedlicher Initialisierung gibt?
     

  4. #4
    Avatar von Spyke
    Spyke Spyke ist offline Capoeirista
    Registriert seit
    Oct 2002
    Beiträge
    931
    Beim Parameterlosen Konstruktor wird ein sozusagen leeres Objekt erstellt.
    Ob du ein leeres Objekt brauchst hängt ganz von deiner Anwendung ab.
     
    www.iv-interactive.de - Projektewebsite
    WikiParser - aktuelles Projekt

  5. #5
    Avatar von bolshi
    bolshi bolshi ist offline Mitglied Silber
    Registriert seit
    Mar 2004
    Ort
    berlin
    Beiträge
    63
    Insofern macht meine Vorstellung keinen Sinn, auch die Variablen, die ihre Werte von den Properties erhalten mit in den Standardkonstruktor zu setzen dieser ja parameterlos ist.

    Wie meint engelmarkus das jetzt?
    Geändert von bolshi (11.05.08 um 18:35 Uhr)
     

  6. #6
    engelmarkus engelmarkus ist offline Mitglied Brokat
    Registriert seit
    Sep 2007
    Beiträge
    473
    Also: Du hast in deinem Code 2 Konstruktoren. Deine Frage war doch, ob und wozu man den mit den Parametern braucht. Nicht unbedingt. Wenn du den 2. allerdings dabeihast, kannst du folgendermaßen ein neues Objekt erstellen:

    Code :
    1
    
    var db = New DBConnection("wert1", "wert2");

    Wenn du den 2. Konstruktor nicht hast, dann kannst du die beiden Eigenschaften trotzdem mit Werten füllen, allerdings eben umständlicher:

    Code :
    1
    2
    3
    4
    
    var db = New DBConnection();
     
    db.Name = "wert1";
    db.ConnectoinString = "wert";

    Ob du den ersten und/oder den zweiten Konstruktor brauchst, hängt davon ab, ob es Sinn macht, ein Objekt von DBConnection mit leerem Namen und leerem ConnectionString zu erstellen oder nicht
     

Ähnliche Themen

  1. Was sind Konstruktoren?
    Von Davicito im Forum Java
    Antworten: 4
    Letzter Beitrag: 27.10.10, 11:55
  2. Konstruktoren
    Von drpingoo im Forum C/C++
    Antworten: 2
    Letzter Beitrag: 17.09.08, 18:41
  3. Konstruktoren
    Von mostwanted90 im Forum C/C++
    Antworten: 12
    Letzter Beitrag: 22.03.07, 14:16
  4. Konstruktoren bei Qt
    Von Azi im Forum C/C++
    Antworten: 5
    Letzter Beitrag: 11.08.06, 18:39
  5. Konstruktoren
    Von MrDude im Forum C/C++
    Antworten: 1
    Letzter Beitrag: 25.01.04, 14:22