构造函数应该具有指定的参数

时间:2016-05-03 08:13:01

标签: c# constructor

您好我正在完成学校作业。我的程序中的所有内容都运行正常,但是老师要我在我的一个构造函数中添加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;
            }
        }
    }
}

dateTime = value不是DateTime类型的参数吗?

2 个答案:

答案 0 :(得分:2)

constructor of a C#类是一个没有返回类型且类名相同的方法。每次创建类的实例(new 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 :(得分:1)

由于DateTime是一个不可变的结构,因此只能从构造函数中设置它的值。这意味着你需要做这样的事情:

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

在你的情况下,你可以使用它,因为你把它设置在其他地方:

private DateTime dateTime;

(此外,您的酒店也需要get,您现在只需set