2008-11-09 4 views

Répondre

10

Tant que vous n'êtes pas dans un thread différent, oui l'exemple de code est valide. Une zone de texte (ou d'autres éléments de formulaires Windows) sont toujours des objets qui peuvent être transmis et manipulés par des méthodes.

+0

Merci pour clarifier et votre réponse rapide. –

8

Ouais, ça va marcher. Vous ne passez pas un objet - vous passez un référence à l'objet.

Voir "Parameter passing in C#" pour les détails quand il s'agit de passer-par-ref vs valeur de passage.

+0

Merci d'avoir corrigé ma compréhension de l'utilisation des termes. Votre réponse et vos «références d'information» sont également très appréciées. –

+0

lien vers "Passage de paramètre en C#" n'est plus valide. –

+0

@ CarolinaJay65: Correction maintenant. Pour une raison ou une autre, pobox.com avait perdu mon URL ... –

4

Pour tout type de référence, c'est bien - vous avez passé le référence à l'objet, mais il n'y a qu'un seul objet, donc les changements sont visibles à l'appelant.

Le temps principal que ne fonctionnera pas pour est pour "structs" (valeur-types) - mais ils ne devraient vraiment pas être mutable de toute façon (c'est-à-dire qu'ils ne devraient pas vraiment avoir des propriétés éditables).

Si vous besoin de le faire avec un struct, vous pouvez ajouter « ref » - à savoir

public void MyFunction(ref MyMutableStruct whatever) 
{ 
    whatever.Value = "Hi."; // but avoid mutable structs in the first place! 
} 
+0

Pourquoi les structures ne devraient-elles pas être modifiables? Ne sont-ils pas juste une version plus légère des classes? – DOK

+0

@DOK: Non, ils sont complètement différents. Ils se comportent très différemment, et si vous modifiez les structures, vous * rencontrerez des problèmes. Dis juste non. –

+0

Les structs sont traités comme des types de valeur et non comme des références d'objet. Passer une structure équivaut à passer un int, toute modification apportée à l'entier ne quittera pas la méthode. – Greg

Questions connexes