Sobes.tech
Junior — Middle

Welke processen en gevolgen treden op wanneer een object wordt doorgegeven aan een functie of methode in programmeren?

sobes.tech AI

Antwoord van AI

In C# wordt bij het doorgeven van een object aan een functie of methode een kopie van de verwijzing naar dat object doorgegeven, niet het object zelf. Dit betekent dat je binnen de methode de toestand van het object (zijn velden en eigenschappen) kunt wijzigen, en deze wijzigingen zichtbaar zijn buiten de methode, omdat de verwijzing naar hetzelfde object in het geheugen wijst.

Echter, als je binnen de methode de parameter een nieuwe verwijzing toewijst (bijvoorbeeld, param = new Object()), dan heeft dit geen invloed op de oorspronkelijke verwijzing buiten de methode, omdat de kopie van de verwijzing lokaal wordt gewijzigd.

Voorbeeld:

class Person {
    public string Name;
}

void ChangeName(Person p) {
    p.Name = "Иван"; // wijzigt de naam van het object
    p = new Person(); // wijzigt lokaal de verwijzing, maar niet buiten de methode
    p.Name = "Пётр";
}

Person person = new Person { Name = "Алексей" };
ChangeName(person);
Console.WriteLine(person.Name); // Drukt "Иван" af

Dus, het doorgeven van een object is het doorgeven van de verwijzing op waarde. Veranderingen in de toestand van het object blijven bestaan, maar de heraanduiding van de verwijzing niet.