En C#, j'ai toujours pensé que les variables non primitives étaient transmises par référence et les valeurs primitives transmises par valeur.
Ainsi, lorsqu'on passe à une méthode un objet non primitif, tout ce qui est fait à l'objet dans la méthode affecte l'objet passé. (C# 101 trucs)
Cependant, j'ai remarqué que lorsque je passe un objet System.Drawing.Image, cela ne semble pas être le cas ? Si je passe un objet system.drawing.image à une autre méthode, et que je charge une image sur cet objet, puis que je laisse cette méthode sortir de son champ d'application et que je reviens à la méthode appelante, cette image n'est pas chargée sur l'objet original ?
Pourquoi ?
29 votes
Toutes les variables sont transmises par valeur par défaut en C#. Vous passez la valeur de la référence dans le cas des types de référence.
0 votes
C'est la même chose : pourquoi-une-liste-qui-est-passée-sans-ref à une-fonction-agissant-comme-passée-avec-ref
0 votes
Comme aucun code n'a été donné, la question n'est pas vraiment claire. Peut-être que le PO voulait dire
image.Load(filename)
ou peut-être qu'ils voulaient direimage = Image.Load(filename)
dondeimage
est le paramètre de la fonction.