2017-10-13 3 views
-2

Hallo Ich mache einen C# natürlich und kann den Konstruktor Aufruf Subjekt nicht verstehen. Ich bekomme Fehler und habe Videos angeschaut, aber ich bekomme es nicht zum laufen, ich bekomme immer den Fehler: "E2.Student.Student (string, string)" kann sich nicht selbst anrufen "Konstruktor Aufruf in C# Klasse

Wenn ich es versuche Erzeuge einen Konstruktor mit 2 Parametern Ich erhalte diesen Fehler, da ich diesen Konstruktor mit den 2 Parametern verstehe, die ich versuche, Erben vom Konstruktor darunter mit den 4 Parametern zu erstellen?

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Text; 
using System.Threading.Tasks; 

namespace E2 
{ 
    class Student 
    { 
     string fullName; 
     string course; 
     string email; 
     string phonenr; 
     enumUniversity university; 
     enumSubject subject; 

     public Student() 
     { 
     } 

     public Student(string fullname,string course) : this (fullname,course) =======>THIS IS WHERE I GET THE ERROR 
     { 
     } 

     public Student(string fullname, string course, string email, string phonenr, enumUniversity university, enumSubject subject) 
     { 
      this.fullName = fullname; 
      this.course = course; 
      this.email = email; 
      this.phonenr = phonenr; 
      this.university = university; 
      this.subject = subject; 
     } 

     public void PrintInfo() 
     { 
      Console.WriteLine("Name: {0} Course {1} email {2} phonenr {3} univ {4} subject {5}", fullName, course, email, phonenr, university, subject); 
     } 
    } 
} 

Beispiel von meinem Lerninhalt:

public Dog(string name) 
: this(name, 1) // Constructor call 
{ 
} 
// Two parameters 
public Dog(string name, int age) 
: this(name, age, 0.3) // Constructor call 
{ 
} 
// Three parameters 
public Dog(string name, int age, double length) 
: this(name, age, length, new Collar()) // Constructor call 
{ 
} 
// Four parameters 
public Dog(string name, int age, double length, Collar collar) 
{ 
this.name = name; 
this.age = age; 
this.length = length; 
this.collar = collar; 
} 
+3

Wenn Ihre Absicht ist, dass die 2-Parameter-Konstruktor auf den 6-Parameter-Konstruktor verlassen sollte, * welche Werte * sollte für 'email' verwendet werden,' phoner', etc? –

+1

Liefern Sie die Standardwerte: this (fullname, Kurs, "Standard-E-Mail", "Standard-Telefon", university.Val, subject.Val) – mm8

+0

Derzeit möchten Sie Ihren Konstruktor mit 2 Parametern Konstruktor mit 2 Parametern (sich selbst) aufrufen. Stellen Sie weitere Parameter bereit, um einen anderen Konstruktor aufzurufen. – FCin

Antwort

1

Sie lassen den Konstruktor aufrufen selbst Ctor Verkettungs verwenden. Dies ist natürlich nicht möglich, da es in der Welt in eine Art Endlosschleife führen würde.

Der Weg, dies zu tun, ist, dass Sie den Konstruktor mit allen anderen Argumenten aufrufen müssen, wie ths:

 public Student() : this(string.Empty, string.Empty) 
     { 
     } 

     public Student(string fullname,string course) 
      : this (fullname,course, string.Empty, string.Empty, default(enumUniversity), default(enumSubject)) 
     { 
     } 

     public Student(string fullname, string course, string email, string phonenr, enumUniversity university, enumSubject subject) 
     { 
      this.fullName = fullname; 
      this.course = course; 
      this.email = email; 
      this.phonenr = phonenr; 
      this.university = university; 
      this.subject = subject; 
     } 
+0

Ok danke ich verstehe jetzt. Wird so schnell wie möglich die richtige Antwort akzeptieren. – Wilest