[英]c# is this how I do override methods?
// Loads a users info
public void loadUserInfo()
{
CrystalTech.tblUsersDataTable dsCommon = new CrystalTech.tblUsersDataTable();
using (tblUsersTableAdapter userAdapter = new tblUsersTableAdapter())
{
userAdapter.FillBy(dsCommon, this.ID);
}
this.username = dsCommon[0].userName;
this.company.ID = dsCommon[0].clientID;
this.company.name = dsCommon[0].ClientName;
this.isBuyer = bool.Parse(dsCommon[0].isBuyer.ToString());
this.isClient = bool.Parse(dsCommon[0].isClient.ToString());
this.isClientPowerUser = bool.Parse(dsCommon[0].powerUser.ToString());
this.isReportingUser = bool.Parse(dsCommon[0].reportingUser.ToString());
this.isSupplier = bool.Parse(dsCommon[0].isSupplier.ToString());
this.isPaperSupplier = bool.Parse(dsCommon[0].isPaperSupplier.ToString());
this.hasKitView = bool.Parse(dsCommon[0].haskitview.ToString());
}
public void loadUserInfo(int usersID)
{
this.ID = usersID;
loadUserInfo();
}
这是正确/标准吗? 还是我处理方法不正确? 目的是使usersID传递到可选参数中。
从C#4.0开始,您还可以使用可选参数:
// Loads a users info
public void loadUserInfo(int usersID = 0)
{
if (usersID > 0) this.ID = usersID;
CrystalTech.tblUsersDataTable dsCommon = new CrystalTech.tblUsersDataTable();
using (tblUsersTableAdapter userAdapter = new tblUsersTableAdapter())
{
userAdapter.FillBy(dsCommon, this.ID);
}
this.username = dsCommon[0].userName;
this.company.ID = dsCommon[0].clientID;
this.company.name = dsCommon[0].ClientName;
this.isBuyer = bool.Parse(dsCommon[0].isBuyer.ToString());
this.isClient = bool.Parse(dsCommon[0].isClient.ToString());
this.isClientPowerUser = bool.Parse(dsCommon[0].powerUser.ToString());
this.isReportingUser = bool.Parse(dsCommon[0].reportingUser.ToString());
this.isSupplier = bool.Parse(dsCommon[0].isSupplier.ToString());
this.isPaperSupplier = bool.Parse(dsCommon[0].isPaperSupplier.ToString());
this.hasKitView = bool.Parse(dsCommon[0].haskitview.ToString());
}
任何时候只要您的方法具有相同的名称但参数不同 ,就可以正确地重载。
假设第二种方法是loadUserInfo
则是-这是正确的。
汤姆
这样做没有任何问题,但是您不必具有其他方法名称即可接受参数(loadUserInfo与loadUserInf)。 如果两个方法接受不同的参数,则可以使用相同的名称。 因此,您可以:
public void loadUserInfo()
和
public void loadUserInfo(int usersID)
首先,您要做的是method overloading
, overriding
是完全不同的。 假设您正在追求方法重载,并且参数化方法的名称是一个简单的错字,那么是的,您就是这样做的。
第二个应该是loadUserInfo
,否则,是的。
如果希望将ID作为可选参数,则应签出C#4.0中C#的可选参数。
http://geekswithblogs.net/michelotti/archive/2009/02/05/c-4.0-optional-parameters.aspx
不,这不对。 覆盖是当您为继承的方法提供其他实现时,您正在做的是重载。
重载时,应为方法使用相同的名称。 另外,建议使用pascal大小写来命名方法:
// Loads a users info
public void LoadUserInfo() {
...
}
public void LoadUserInfo(int usersID) {
this.ID = usersID;
loadUserInfo();
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.