2016-05-03 2 views
0

Привет, я делаю школьное задание. Все в моей программе отлично работает, но учитель хочет, чтобы я добавил параметр типа DateTime в один из моих конструкторов. Я немного запутался, так как я думаю, что у меня уже есть параметр этого типа:Конструктор должен иметь указанный параметр

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; 
      } 
     } 
    } 
} 

Is DATETIME = значение не является параметром типа DateTime?

+1

Какой класс это. Прошу показать объявление класса. Это не конструктор, а свойство – Steve

+0

@Steve Я думаю, проблема связана с '= new DateTime();' ... –

ответ

2

Класс constructor of a C# - метод без типа возврата и с тем же именем класса. Конструктор вызывается каждый раз, когда вы создаете экземпляр класса (новый YourClass).

У вас может быть много конструкторов с различными параметрами, переданными этим методам, даже без параметров (это стандартный конструктор).
Правильный конструктор определяется параметрами, которые вы проходите, когда вы создаете класс ....

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

С DateTime - неизменяемая структура, вы можете устанавливать ее значения только из конструктора. Это означает, что вам нужно сделать что-то вроде этого:

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

В вашем случае, вы можете просто использовать это, так как вы установите его где-нибудь еще:

private DateTime dateTime; 

(Кроме того, ваша собственность нуждается в get слишком , у вас просто есть set)

+0

Это довольно хорошее предположение, не видя его декларации класса! – DGibbs

+0

Это может быть объявление всего класса @DGibbs –

+0

Теперь я опубликовал весь скрипт. – Taegos

Смежные вопросы