我试图让这个名为“Medico'转化为博士,但在"这"它出现错误
构造函数' Medico.Medico(字符串,字符串,整数,字符串,字符串)无法调用自身。
我想让一个医生类将数据添加到列表视图中。
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();
}
}
答案 0 :(得分:0)
在你的第二个构造函数中,你只是传递你得到的参数..所以它自己调用。
this(nome, especialidade, _NIF, _inicio, _fim)
而是将_inicio
和_fim
投射到DateTime
,然后调用第一个构造函数。
请参阅Converting a String to a 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; }
答案 1 :(得分:0)
如果要为具有不同输入参数的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);
}
答案 2 :(得分:0)
以下构造函数定义:
refreshPane: function (paneName, args, callback, callOnReload) {
var paneId;
if (!paneName) {
paneId = this.getModuleManager().getPane().attr('id');
} else {
paneId = this.getPaneById(paneName).attr('id');
}
var pane = $('#' + paneId);
var parentPane = pane.data('parentpane');
if (parentPane) {
this.refreshPane(parentPane, args, callback);
return;
}
//set module manager to current refresh pane.
this._moduleManager = pane.data('dnnModuleManager');
var ajaxPanel = $find(paneId + "_SyncPanel");
if (ajaxPanel) {
//remove action menus from DOM bbefore fresh pane.
var handler = this;
pane.find('div.DnnModule').each(function () {
var moduleId = handler._moduleManager._findModuleId($(this));
$('#moduleActions-' + moduleId).remove();
});
Sys.WebForms.PageRequestManager.getInstance().add_endRequest(this._refreshCompleteHandler);
this._refreshPaneId = paneId;
this._refreshCallback = callback;
ajaxPanel.ajaxRequest(args);
} else {
//save the args into cookie, after page reload then catch the cookie
//and float the module for drag
if (args && !this._noFloat) {
this._setCookie('CEM_CallbackData', args);
}
if (callOnReload && typeof callback == "function") {
callback.call($('#' + paneId), [true]);
}
location.reload();
}
}
意味着调用此类的另一个构造函数并传递public Medico(string nome, string especialidade, int _NIF, string _inicio, string _fim)
: this(nome, especialidade, _NIF, _inicio, _fim)
中的值。由于您只是传递this(...)
和_inicio
的字符串,构造函数会尝试调用自身。我建议你想调用另一个构造函数:
_fim
要做到这一点,你需要先将字符串转换为DateTimes。也许是这样的:
public Medico(string nome, string especialidade, int _NIF, DateTime _inicio, DateTime _fim)
只需更改模式