C#原始类型或复杂类型作为方法签名?

时间:2011-09-06 19:01:22

标签: c# primitive-types complextype

使用原始类型或复杂类型有哪些优缺点?

何时应该使用原始类型或复杂类型,反之亦然?

即:

public class Person
{
    public string FirstName { get; set; }
    public string LastName { get; set; }
    public int Age { get; set; }
    public int IQ { get; set; }
}


public void FooPrimitiveTypes (string firstName, string lastName, int age, int IQ)
{

}

public void FooComplexTypes(Person person)
{

}

3 个答案:

答案 0 :(得分:6)

  1. 通常在处理不相交的值时使用单独传递每个属性。此外,有时用于构造函数。不好的做法。

  2. 当值相关时,首选此方式。

  3. 为什么#1是一种不好的做法 - 假设您需要添加height。我宁愿通过添加另一个属性来更新一个类,而不是50个方法。

答案 1 :(得分:0)

Foo在概念上与人交往吗?是否所有(或至少大多数)人都被Foo使用,或者它只是使用恰好是人的一些信息? Foo是否有可能处理不是人的事情?如果Foo是InsertPersonIntoDB(),那么最好处理Person。

如果Foo是PrintName(),那么也许PrintName(字符串FirstName,字符串LastName)更合适(或者,您可以改为定义一个Name类,并说一个人有一个名字)。

如果你发现自己创建了一半初始化的临时Person对象只是为了传递给Foo,那么你可能想要分解这些参数。

答案 2 :(得分:0)

需要注意的是,当您使用基元时,它们通过值传递...对象引用也通过值传递,但由于对值的所有基础引用都是引用,因此它实际上是通过引用传递的。因此,根据您正在做的事情,这个传递值或通过引用传递可能是重要的。同样在第一种情况下,对基元的修改不会影响调用范围中变量的值,但是修改传入的对象将影响调用范围中的对象。