我正在尝试使此类称为" partoto'",该课程翻译成医生,但在"此"中,出现错误
constructor'Medico.Medico(字符串,字符串,int,String,String(无法调用自己。
我想在列表视图中添加医生课以添加数据。
public class Medico
{
public string Nome { get; set; }
public string Especialidade { get; set; }
private int _NIF;
private DateTime _inicio;
private DateTime _fim;
public int NIF
{
get { return _NIF; }
set
{
_NIF = value;
if (_NIF < 99999999)
{
_NIF = 0;
}
}
}
public DateTime Inicio
{
get { return _inicio; }
set
{
_inicio = value;
}
}
public DateTime Fim
{
get { return _fim; }
set
{
_fim = value;
}
}
public Medico(string nome, string especialidade, int _NIF, DateTime _inicio, DateTime _fim)
{
Nome = nome;
Especialidade = especialidade;
NIF = _NIF;
Inicio = _inicio;
Fim = _fim;
}
public Medico(string nome, string especialidade, int _NIF, string _inicio, string _fim)
: this(nome, especialidade, _NIF, _inicio, _fim) {
}
public override string ToString()
{
return Inicio.ToString() + Fim.ToString();
}
}
以下构造函数定义:
public Medico(string nome, string especialidade, int _NIF, string _inicio, string _fim)
: this(nome, especialidade, _NIF, _inicio, _fim)
意味着调用此类的另一个构造函数并传递this(...)
中的值。由于您只需通过_inicio
和_fim
的字符串,因此构造函数试图自称。我建议您想致电另一个构造函数:
public Medico(string nome, string especialidade, int _NIF, DateTime _inicio, DateTime _fim)
要进行taht,您需要首先将字符串转换为数据记录。也许这样的东西:
public Medico(string nome, string especialidade, int _NIF, string _inicio, string _fim)
: this(nome, especialidade, _NIF, DateTime.ParseExact(_inicio, 'yyyyMMdd',CultureInfo.InvariantCulture) , DateTime.ParseExact(_fim,'yyyyMMdd',CultureInfo.InvariantCulture))
只需更改模式
在您的第二个构造函数中,您只是传递了您获得的参数。
this(nome, especialidade, _NIF, _inicio, _fim)
取而代之的是将_inicio
和_fim
施加到DateTime
,并将其称为第一个构造函数。
请参阅将字符串转换为DateTime
this(nome, especialidade, _NIF, DateTime.ParseExact(_inicio,"YourFormat"), DateTime.ParseExact(_fim,"YourFormat"))
- 如果您知道格式是正确的
DateTime
格式,则可以使用DateTime.Parse()
通常,您可能想更改和使用对象界限器,而不是拥有许多构造函数。有关何时使用的更多信息,请参见:
- 我应该使用对象初始器或构造函数吗?
- 对象初始器和构造函数有什么区别?
除了使用默认实现的属性外,还可以更好地使用自动企业:
public DateTime Fim { get; set; }
public DateTime Inicio { get; set; }
如果要为Medico创建具有不同输入参数的几个构造函数,只需创建一个新的Medico构造函数,而无需this
:
public Medico(string nome, string especialidade, int _NIF, DateTime _inicio, DateTime _fim)
{
Nome = nome;
Especialidade = especialidade;
NIF = _NIF;
Inicio = _inicio;
Fim = _fim;
}
public Medico(string nome, string especialidade, int _NIF, string _inicio, string _fim)
{
// here convert _inicio and _fim to DateTime
// And call the first constructor method with new parameters
Medico(nome, especialidade, _NIF, inicioDateTime, fimDateTime);
}