C# 使用两个对象调用方法并存储在对象数组中
我想调用一个方法,其中两个参数是对象(一个检索人,一个添加人)。然后存储在Person对象数组中,然后我可以分别处理这两个对象 在方法中:C# 使用两个对象调用方法并存储在对象数组中,c#,C#,我想调用一个方法,其中两个参数是对象(一个检索人,一个添加人)。然后存储在Person对象数组中,然后我可以分别处理这两个对象 在方法中: 我确实创建了object Person,并从名为“地中海”的数据库中检索数据,将数据存储在其中。 并添加其他行(人物特征),并且确实希望将其传回。 但不返回对象,直接失败 谁能帮帮我吗 我有这样的想法: public Person [] retrievePerson(Person somePerson, Person addRowPerson) {
我确实创建了object Person,并从名为“地中海”的数据库中检索数据,将数据存储在其中。
并添加其他行(人物特征),并且确实希望将其传回。 但不返回对象,直接失败 谁能帮帮我吗 我有这样的想法:
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
}
}
public Person[]retrievePerson(Person-somePerson,Person-addRowPerson)
{
.......
findedPerson=新人(头衔、名、次名、城市、国籍、字母);
myTableCreatedPerson=新人(头衔、名、次名、城市、国籍、字母);
返回retrievePerson(findedPerson,myTableCreatedPerson);
}
//在不同的类中调用函数
public void retrievePersonTest()//直接在DB中创建Person,然后检索Person并将检索功能与创建功能进行比较,然后直接从DB中删除他
{
预期人员=空;
实际人数=空;
Person addRowPerson=null;
人[]两个人;
DBConnect target=new DBConnect();
尝试/检索某人
{
TwoPersonary=target.retrievePerson(预期为addRowPerson);//不返回
twoPersonArray=(Func)target.retrievePerson(应为addRowPerson.CreateDelegate(typeof(Func));//也不返回
}
}
不清楚为什么要传递参数,如果在函数中之后不使用它,但假设它是错误的
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}
}
这个应该可以工作,但您需要对此进行测试
但我也强烈建议修改代码,并为您执行的每个操作使用不同的函数。不要对行为不同的同一函数进行双重调用。几个月后,当代码变得越来越复杂时,您将跳入一片混乱
希望这有帮助。您创建了一个无休止的递归,因为在
retrievePerson
的末尾,您再次调用了它
您需要将retrievePerson
的返回语句更改为:
return new[] {findedPerson, myTableCreatedPerson};
谢谢你,丹尼尔现在工作得很好。我喜欢有人可以帮助别人的想法…希望将来我也能这样做。你知道我在哪里可以找到资源,学习ADO.net或推荐好书吗。