直接参数Vs传递一个类

时间:2010-09-24 17:01:58

标签: c#

假设有一个具有3个属性的类。

员工

  1. 名称
  2. 年龄
  3. 萨尔
  4. 我有一个网络方法GetInfo

    通过直接参数与直接课程的表现有什么不同?

    GetInfo(Employee emp) // This will internally call emp.age & return the values.
    
    GetInfo(int age)
    

    有什么想法吗?

4 个答案:

答案 0 :(得分:1)

衡量自己的表现,以确定一个人的表现是否优于另一个人。创建双重方法,获取秒表实例,并对方法的每个版本执行几千次调用,并查看两者之间是否存在可证明的相关差异。我怀疑是否存在。

与此同时,问问自己Employee实例是否与方法相关。如果您正在做的是接受员工的年龄,然后传回与特定员工无关的数据,那么为什么还要将方法绑定到实例呢?只需取整数参数即可。例如,假设你的方法调用就是这个

public Employee[] GetEmployeesByAge(ArgumentType argument)

参数是Employee还是简单整数是否有意义?相关输入是年龄,而不是年龄来源的Employee。如果您选择使用Employee作为参数,那么您将此方法限制为已经有Employee实例待定的调用方,但情况可能并非总是如此。 (毕竟,他们正在努力获得员工。)

选择您的指南:YAGNI,KIS等

答案 1 :(得分:0)

表现可能并不明显。

// Either way the performance is about the same
Employee emp = new Employee();
Info out1 = GetInfo(emp);
// or
Info out2 = GetInfo(emp.Age);

答案 2 :(得分:0)

如果您已经拥有Employee课程,那么您需要考虑的唯一考虑因素是性能。如果您必须创建一个年龄设置为空的Employee对象,则只需使用年龄。

然而,从语义上讲,如果您使用int参数,则应该明确(通过方法名称)您将按年龄检索,否则您发送的内容可能并不明显,除非您查看方法声明,因此请考虑将名称更改为GetInfoByAge

答案 3 :(得分:0)

我认为你应该使用完全需要它的方法,而不是更多。 这将改善代码重用和关注点分离。 在这个发展阶段,性能不应该成为一个问题。