Verständnisproblem bei unterschiedlichen Konstruktoren

bolshi

Mitglied
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:
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
 
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:
public string Name { get; set; }

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

Code:
        public DbConnection()
        {
            sName = "";
            sConnectionString = "";
            sName = name;
            sConnectionString = connectionstring;
        }

Habe ich dich richtig verstanden oder meinst du, dass es zwei Standardkonstruktoren mit unterschiedlicher Initialisierung gibt?
 
Beim Parameterlosen Konstruktor wird ein sozusagen leeres Objekt erstellt.
Ob du ein leeres Objekt brauchst hängt ganz von deiner Anwendung ab.
 
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?
 
Zuletzt bearbeitet:
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:
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:
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
 
Zurück