繁体   English   中英

C#这是我怎么做重写方法?

[英]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 overloadingoverriding是完全不同的。 假设您正在追求方法重载,并且参数化方法的名称是一个简单的错字,那么是的,您就是这样做的。

第二个应该是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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM