C# 使用两个对象调用方法并存储在对象数组中

C# 使用两个对象调用方法并存储在对象数组中,c#,C#,我想调用一个方法,其中两个参数是对象(一个检索人,一个添加人)。然后存储在Person对象数组中,然后我可以分别处理这两个对象 在方法中: 我确实创建了object Person,并从名为“地中海”的数据库中检索数据,将数据存储在其中。 并添加其他行(人物特征),并且确实希望将其传回。 但不返回对象,直接失败 谁能帮帮我吗 我有这样的想法: public Person [] retrievePerson(Person somePerson, Person addRowPerson) {

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

在方法中:
我确实创建了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或推荐好书吗。