Hej Hej, Verkar som om du vill att resultatet av funktionen skall vara finalProjectId. För att det skall fungera måste funktionen antingen returnerna värdet eller spara det någonstans. I ditt fall är det väl enklast att låta finalProjectId vara en referens till en variabel i den anropande funktionen. Hej & tack för snabbt svar. Henrk, inparmeter ändras inte ?
jag har tagit en rekursive funktion ifrån MSDN och modifierat den lite.
se nedan.
public static void RecursiveWalk(XPathNavigator nav, int finalProjectId)
{
switch (nav.NodeType){
case XPathNodeType.Element:
if(nav.LocalName == "ParentName")
{
//Här anropar jag ett API funktion som retunerar en int, jag sätter här om
// finalProjectId till inten som retuneras.
}
}
if ( nav.MoveToFirstChild() )
{
do{
RecursiveWalk(nav, finalProjectId);
} while ( nav.MoveToNext() );
nav.MoveToParent();
}
}
När sedan funktionen loopat och det inte finns nån mera child så sätts finalProjectId om till värdet som den hade om inparameter.
Mina frågor är ?
Kan man ändra en inparameter mitt i en metod ?
Varför sätts den om ?
//HenrikSv: inparmeter ändras inte ?
Ja du kan ändra inparametern i en metod men då måste du oxå komma åt parametern från denna metod. ev som en inputparamter. Dock är det av typen int och default val i C# men man kan lätt sätta om denna till en ref om du vill att den skall så genom ovanför din metod.
Din fråga varför den säts om kan jag inte svara på, utan det är mer varför sätter du den överhuvudtaget? Och då borde du själv kanske få fram svaret på din fråga, för behöver den sättas om?
Jag vet inte exakt vad du vill få ut av din metod det är bara du som vet detta.
Men skriv gärna lite mer om dina tankar så svarar jag gärna, om inte andra hinner före. ;-) är lite seg idag. Måndagssjukan? ;-)
Mvh JohanSv: inparmeter ändras inte ?
Sv:inparmeter ändras inte ?
Det är så att jag loopar igenom en xml fil och bygger upp en mapp struktur ut efter den.
När jag anropar min rekursiva metod så har jag med mig parent id till översta nivån som inparameter, och det är den jag vill ändra .
Så när jag skapas första mappen så retuneras den nyss skapades mappens id, och detta id kommer att vara parent till nästa nivå.
Det är här då som jag ändra inparametern till det nya id'et.
//HenrikSv: inparmeter ändras inte ?
Eftersom du gör en rekursiv hantering så ropar du völ på metoden igen med det nya idt som input?
Foo1(id)
{
loop
{
Foo1(nyttID)
}
}
Mvh Johan