我想调用一个方法,其中两个参数是对象(一个检索Person,一个添加Person)。然后存储在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
}
}
答案 0 :(得分:1)
你创建了一个无休止的递归,因为在retrievePerson
结束时你再次调用它。
您需要将retrievePerson
的return语句更改为:
return new[] {findedPerson, myTableCreatedPerson};
答案 1 :(得分: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}
}
此应该有效,但您需要对此进行测试。
但我也强烈建议修改您的代码,并为您所做的每项操作使用不同的函数。不要对行为的相同功能进行双重调用。几个月后,当代码变得越来越复杂时,你将陷入完全混乱。
希望这有帮助。