使用原始类型或复杂类型有哪些优缺点?
何时应该使用原始类型或复杂类型,反之亦然?
即:
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)
{
}
答案 0 :(得分:6)
通常在处理不相交的值时使用单独传递每个属性。此外,有时用于构造函数。不好的做法。
当值相关时,首选此方式。
为什么#1是一种不好的做法 - 假设您需要添加height
。我宁愿通过添加另一个属性来更新一个类,而不是50个方法。
答案 1 :(得分:0)
Foo在概念上与人交往吗?是否所有(或至少大多数)人都被Foo使用,或者它只是使用恰好是人的一些信息? Foo是否有可能处理不是人的事情?如果Foo是InsertPersonIntoDB(),那么最好处理Person。
如果Foo是PrintName(),那么也许PrintName(字符串FirstName,字符串LastName)更合适(或者,您可以改为定义一个Name类,并说一个人有一个名字)。
如果你发现自己创建了一半初始化的临时Person对象只是为了传递给Foo,那么你可能想要分解这些参数。
答案 2 :(得分:0)
需要注意的是,当您使用基元时,它们通过值传递...对象引用也通过值传递,但由于对值的所有基础引用都是引用,因此它实际上是通过引用传递的。因此,根据您正在做的事情,这个传递值或通过引用传递可能是重要的。同样在第一种情况下,对基元的修改不会影响调用范围中变量的值,但是修改传入的对象将影响调用范围中的对象。