0

我想调用一个方法,其中两个参数是对象(一个检索人员,一个添加人员)。然后存储在 Person 对象数组中,然后我可以分别使用这两个对象。

在方法中:
我确实创建了对象 Person 并将数据存储在其中,从数据库中检索数据,其中 firstName 是“Mediterranean”。
并添加其他行(人员特征)并且也希望将其传回。但不返回对象并直接失败。

有人可以帮我吗?

我有这样的事情:

public Person [] retrievePerson(Person somePerson, Person addRowPerson)
{ 
    .......
    findedPerson = new Person(title, firstName, secondName, city, nationality, letter);
    myTableCreatedPerson = new Person(title, firstName, secondName, city, nationality, letter);
    return retrievePerson(findedPerson, myTableCreatedPerson);
}

//and calling function in different class like that
public void retrievePersonTest() //Create Person in DB directly then Retrieve Person and compare retrieve features with create features then directly delete him from DB
{               
    Person expected = null;
    Person actual = null;
    Person addRowPerson = null;
    Person [] twoPersonArray;
    DBConnect target = new DBConnect();

    try //retrieve Person
    {                    
        twoPersonArray =  target.retrievePerson(expected, addRowPerson); //do not return                  
        twoPersonArray = (Func<Person, Person>)target.retrievePerson(expected, addRowPerson).CreateDelegate(typeof(Func<Person, Person>)); //do not return either
    }
}
4

2 回答 2

1

你创建了一个无休止的递归,因为最后retrievePerson你再次调用它。

您需要将 return 语句更改为retrievePerson

return new[] {findedPerson, myTableCreatedPerson};
于 2012-07-24T10:50:57.697 回答
0

不清楚为什么要传递参数,如果在函数之后不使用它,但假设它是一个错误

public Person [] retrievePerson(Person somePerson = null, Person addRowPerson = null)
{ 
     bool nullpassed = false;

       if(somePerson  == null) {
          nullpassed  = true;
          somePerson  = new Person(title, firstName, secondName, city, nationality, letter);
       }

       if(addRowPerson == null) {
          nullpassed = true;
          addRowPerson = new Person(title, firstName, secondName, city, nationality, letter);
       }

       if(nullpassed)    
           return retrievePerson(somePerson  , addRowPerson );
       else 
           return new Person[] {somePerson  , addRowPerson} 
}

应该可以,但是您需要对此进行测试。

但我也强烈建议修改你的代码,并为你所做的每一个操作使用不同的函数。不要对行为不同的同一个函数进行两次调用。几个月后你会陷入一团糟,那时代码会变得越来越复杂。

希望这可以帮助。

于 2012-07-24T10:50:12.260 回答