2016-05-03 10 views
0

haben Hallo, ich mache eine Schulaufgabe. Alles in meinem Programm funktioniert gut, aber der Lehrer möchte, dass ich einen Parameter vom Typ DateTime in einem meiner Konstruktoren hinzufüge. Ich bin ein wenig verwirrt, da ich denke, dass ich bereits einen Parameter dieses Typs haben:Konstruktor sollte Parameter

using System; 
using System.Windows.Forms; 

namespace Assignment4 
{ 
    class Task 
    { 
     private string time = string.Empty; 
     private string date = string.Empty; 
     private DateTime dateTime = new DateTime(); 
     private string description = string.Empty; 
     private object priorityType; 
     private string priority; 

     public string Description 
     { 
      get 
      { 
       return description; 
      } 
      set 
      { 
       description = value; 
      } 
     } 


     public DateTime DateTime 
     { 
      set 
      { 
       dateTime = value; 
       time = dateTime.TimeOfDay.ToString(); 
       date = dateTime.Date.ToString("d"); 
      } 
     } 

     public string Time 
     { 
      get 
      { 
       return time; 
      } 
     } 

     public string Date 
     { 
      get 
      { 
       return date; 
      } 
     } 


     public object PriorityType 
     { 
      set 
      { 
       priorityType = value; 
       priority = priorityType.ToString(); 
      } 
     } 

     public string Priority 
     { 
      get 
      { 
       return priority; 
      } 
     } 
    } 
} 

Date = Wert nicht ein Parameter vom Typ Datetime?

+1

Welche Klasse ist dies. Bitte zeigen Sie die Deklaration der Klasse an. Dies ist kein Konstruktor, sondern eine Eigenschaft – Steve

+0

@Steve Ich denke, das Problem ist mit '= new DateTime();' ... –

Antwort

2

Die constructor of a C# Klasse ist eine Methode ohne Rückgabetyp und mit dem gleichen Namen der Klasse. Der Konstruktor wird jedes Mal aufgerufen, wenn Sie eine Instanz der Klasse erstellen (new YourClass).

Sie können viele Konstruktoren mit verschiedenen Arten von Parametern an diese Methoden übergeben, auch eine ohne Parameter (es ist der Standardkonstruktor).
Der richtige Konstruktor wird durch die Parameter identifiziert, die Sie passieren, wenn Sie die Klasse zu erstellen ....

public class Person 
{ 
    private string _name; 
    private DateTime _dob; 
    public Person(string name, DateTime dateOfBirth) 
    { 
     _name = name; 
     _dob = dateOfBirth; 
    } 
} 


..... somewhere in your code ..... 
Person myself = new Person("Steve", new DateTime(1970,1,1)); 
1

Da DateTime eine unveränderbare Struktur ist, können Sie ihre Werte nur über den Konstruktor festlegen. Das heißt, Sie, so etwas zu tun:

dateTime = new DateTime(2016, 05, 03); 

In Ihrem Fall, können Sie dies nur nutzen können, da Sie es woanders gesetzt:

private DateTime dateTime; 

(Auch Ihre Immobilie ein get muss auch , haben Sie nur eine set jetzt) ​​

+0

Dies ist eine ziemlich gute Schätzung, ohne seine Klasse Erklärung zu sehen! – DGibbs

+0

Dies könnte die gesamte Klassendeklaration @DGibbs sein –

+0

Ich habe das ganze Skript jetzt gepostet. – Taegos

Verwandte Themen