问个方法重载的问题

lvyb023 2011-04-03 03:38:14
我有3个返回人员信息的方法 Employee() //无条件 返回全部人员 Employee(int autoID) //返回某个人员的信息 Employee(int deptID) //返回属于某部门的全部人员信息 第二种和第三种的参数怎么区分呢? 难道只能改方法名称吗?
...全文
17703 218 打赏 收藏 转发到动态 举报
写回复
用AI写文章
218 条回复
切换为时间正序
请发表友善的回复…
发表回复
lmc19860810 2013-12-17
  • 打赏
  • 举报
回复
多态啊?????
灬浪子灬 2013-12-04
  • 打赏
  • 举报
回复
Employee(int autoID) //返回某个人员的信息 Employee(int deptID) //返回属于某部门的全部人员信息 谁能说下这不是一个方法?
dingzhengchao 2013-11-15
  • 打赏
  • 举报
回复
你这样没法区分,重载是通过参数个数和类型进行区分的
fjxmdennis 2013-11-11
  • 打赏
  • 举报
回复
看完了,还是觉得枚举的方法比较适合我的理解。
盼着到1 2013-10-24
  • 打赏
  • 举报
回复
这么着是重写吧?
reenjie 2013-10-03
  • 打赏
  • 举报
回复
重载是方法名相同,参数的类型或参数的个数不同。重载主要是靠参数来区分。 楼主的方法名相同,并且参数也相同,这样就无法区分,在调用该方法时候就会编译出错。 楼主可以采用这样的方法:

public Employee GetEmployee(int autoID)
{
Employee emp=new Employee();
//实现代码
return emp;
}
public Employee[] GetEmployees(int deptID)
{
Employee[] emps;
//实现代码
return emps;
}
而Employee是一个实体类,这样就可以解决你的问题了。
呗字开头 2013-09-29
  • 打赏
  • 举报
回复
引用 2 楼 Sandy945 的回复:
你是如何理解 Overload 的?
这个不就是一个重新方法吗?
难得自然萌 2013-08-22
  • 打赏
  • 举报
回复
原来回复是有分的,顺便学习下
threenewbee 2013-08-17
  • 打赏
  • 举报
回复
引用 209 楼 yanocean 的回复:
[quote=引用 208 楼 caozhy 的回复:] [quote=引用 207 楼 yanocean 的回复:] [quote=引用 5 楼 caozhy 的回复:] 区分不了。 如果lz正在使用C#4.0那么可以尝试下如下代码:
Employee(int autoID = 0, int deptID = 0)
{
    if (autoID != 0 && deptID == 0)
    {
        ...查询人员
    }
    if (autoID == 0 && deptID != 0)
    {
        ...查询部门
    }
    if ((autoID != 0 && deptID != 0) || (autoID == 0 && deptID == 0))
    {
        throw new Exception("invalid call");
    }
}
调用:
Employee(autoID: 123); // 如果你要查询人员
Employee(deptID: 345); // 如果你要查询部门
这个是4.0的 命名实参?[/quote] 这个叫默认参数。[/quote]msdn上说是Employee(autoID: 123); 命名实参哦 版主大大[/quote] 看错了。不好意思。你说的对。只看到上面的函数定义,那个叫默认参数。
ali_mushishi 2013-08-17
  • 打赏
  • 举报
回复
引用 208 楼 caozhy 的回复:
[quote=引用 207 楼 yanocean 的回复:] [quote=引用 5 楼 caozhy 的回复:] 区分不了。 如果lz正在使用C#4.0那么可以尝试下如下代码:
Employee(int autoID = 0, int deptID = 0)
{
    if (autoID != 0 && deptID == 0)
    {
        ...查询人员
    }
    if (autoID == 0 && deptID != 0)
    {
        ...查询部门
    }
    if ((autoID != 0 && deptID != 0) || (autoID == 0 && deptID == 0))
    {
        throw new Exception("invalid call");
    }
}
调用:
Employee(autoID: 123); // 如果你要查询人员
Employee(deptID: 345); // 如果你要查询部门
这个是4.0的 命名实参?[/quote] 这个叫默认参数。[/quote]msdn上说是Employee(autoID: 123); 命名实参哦 版主大大
threenewbee 2013-08-16
  • 打赏
  • 举报
回复
引用 207 楼 yanocean 的回复:
[quote=引用 5 楼 caozhy 的回复:] 区分不了。 如果lz正在使用C#4.0那么可以尝试下如下代码:
Employee(int autoID = 0, int deptID = 0)
{
    if (autoID != 0 && deptID == 0)
    {
        ...查询人员
    }
    if (autoID == 0 && deptID != 0)
    {
        ...查询部门
    }
    if ((autoID != 0 && deptID != 0) || (autoID == 0 && deptID == 0))
    {
        throw new Exception("invalid call");
    }
}
调用:
Employee(autoID: 123); // 如果你要查询人员
Employee(deptID: 345); // 如果你要查询部门
这个是4.0的 命名实参?[/quote] 这个叫默认参数。
ali_mushishi 2013-08-16
  • 打赏
  • 举报
回复
引用 5 楼 caozhy 的回复:
区分不了。 如果lz正在使用C#4.0那么可以尝试下如下代码:
Employee(int autoID = 0, int deptID = 0)
{
    if (autoID != 0 && deptID == 0)
    {
        ...查询人员
    }
    if (autoID == 0 && deptID != 0)
    {
        ...查询部门
    }
    if ((autoID != 0 && deptID != 0) || (autoID == 0 && deptID == 0))
    {
        throw new Exception("invalid call");
    }
}
调用:
Employee(autoID: 123); // 如果你要查询人员
Employee(deptID: 345); // 如果你要查询部门
这个是4.0的 命名实参?
net研究ing 2013-07-24
  • 打赏
  • 举报
回复
通过这个帖子,懂得基础重要性。
paian52 2013-07-15
  • 打赏
  • 举报
回复
引用 43 楼 NewUser_zhao 的回复:
用枚举把

public enum EmployeeType
{
    所有,
    某人, 
    某部门
}
object Employee(EmployeeType type)
{
    //  TODO...
}

能说的详细点吗?俺是菜鸟,看不懂啊 谢谢!
  • 打赏
  • 举报
回复
菜鸟看的很爽
haojia133086 2013-06-28
  • 打赏
  • 举报
回复
同一个方法签名啊
chenliebin 2013-06-27
  • 打赏
  • 举报
回复
引用 34 楼 falconfei 的回复:
Employee() //无条件 返回全部人员 Employee(int autoID) //返回某个人员的信息 Employee(string deptID) //返回属于某部门的全部人员信息
更好的方法是把参数做成对象object 然后在方法体里面作对象的判断
gaoios 2013-05-09
  • 打赏
  • 举报
回复
好多都是过来打酱油的 没搞清楚状况
勇哥聊IT 2013-05-04
  • 打赏
  • 举报
回复
有意思,学习。
egojit8 2013-04-28
  • 打赏
  • 举报
回复
当然你也可以加个 自定义枚举类型的参数为了区分是返回人员信息还是返回部门全部人员
加载更多回复(177)

110,538

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧