问个方法重载的问题
我有3个返回人员信息的方法
Employee() //无条件 返回全部人员
Employee(int autoID) //返回某个人员的信息
Employee(int deptID) //返回属于某部门的全部人员信息
第二种和第三种的参数怎么区分呢?
难道只能改方法名称吗?
------解决方案--------------------
------解决方案--------------------区分不了。
如果lz正在使用C#4.0那么可以尝试下如下代码:
C# code
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(int id,bool isdept) {
}
------解决方案--------------------
------解决方案--------------------
Employee(int autoID) //返回某个人员的信息
Employee(int deptID) //返回属于某部门的全部人员信息
比如:若 deptID 小于100, autoID >= 100,
那么程序中可以根据id的大小判断要执行的操作!
要不 Employee(int id, IdType idType);
public enum IdType
{
deptID,
PersonID
}
------解决方案--------------------
其实对这个问题,简单的方法加个bool型参数区分一下,而规范的做法是定义个枚举,然后加上个枚举参数。
比如ado.net中执行ExecuteNonQuery方法,而一个参数可以是sql语句,也可以是存储过程名,封装时就可以加个参数,用那个枚举。