Attribuer Variable à un autre et avoir des changements dans un miroir dans l'autre
Est-il possible d'affecter une variable à une autre variable et lorsque vous modifiez la deuxième variable la modification des chutes d'eau jusqu'à la première variable?
Comme ça.
int a = 0;
int b = a;
b = 1;
maintenant, à la fois b et a = 1.
La raison pour laquelle je demande cela parce que j'ai 4 objets que je vais garder la trace de, et je garde une trace de chacune à l'aide d'un 5e objet appelé currentObject qui est égal à celui des 4 objets à l'aide de l'utilisateur. Cependant, je voudrais juste apporter une modification à l'currentObject et avoir juste la cascade de la variable d'origine.
Grâce
OriginalL'auteur JMD | 2012-05-15
Vous devez vous connecter pour publier un commentaire.
Vous avez besoin de distinguer entre objets, références et variables. Si vous avez deux variables différentes (qui ne sont pas lissés par ref/dans une méthode, etc) puis ceux-ci seront indépendants.
Toutefois, si deux variables se rapportent à la même objet (c'est à dire leur type est une classe, et leur valeurs sont égaux références), toute modification de l'objet sera visible via la variable. Il semble que cela est ce que vous voulez atteindre. Par exemple:
Si vous n'êtes pas totalement à l'aise avec la façon dont les types de référence et les objets de travail, vous pouvez lire mon article sur eux.
EDIT: Une analogie que j'utilise souvent est d'une maison. Supposons que nous avons deux morceaux de papier (de variables). La même maison d'adresse est écrit sur les deux morceaux de papier (c'est le valeur de chaque variable, le référence). Il n'y a qu'une seule maison. Si quelqu'un utilise la première feuille de papier pour obtenir à la maison, puis il peint la porte rouge, ils ne sont pas à changer quoi que ce soit sur leur morceau de papier, ils changent quelque chose à propos de la maison. Alors si quelqu'un utilise le deuxième morceau de papier pour obtenir à la maison, ils vont voir que la porte avant est rouge aussi. Il n'y a qu'une seule maison, cependant, de nombreux morceaux de papier, son adresse est écrite sur eux.
Oui - parce que vous n'êtes pas vraiment "changer x2.Nom de l'" - vous modifiez la propriété Name de l'objet exclusif, et vous arrivez à accéder à cet objet via
x2
.Merci pour la mise à jour avec l'analogie. Je comprends comment il est censé travailler plus clairement maintenant, mais je suis encore un peu confus quant à sa mise en œuvre. Si x1 et x2 sont les morceaux de papier dans votre analogie, mais qu'est-ce que la maison? Je pensais que la classe était plus comme le plan d'action pour la maison, et nous avons besoin d'instancier un nouvel objet de ces plans.
pourquoi n'essayez-vous pas? Pensez à ce que vous croyez qu'il doit faire (après la lecture de l'article lié), puis de tester avec une courte application console.
J'ai tout compris, merci encore pour toute l'aide que. J'étais en train de faire de cette façon déjà, mais j'ai été bêtement la réinitialisation de l'objet dans certains aléatoire morceau de code. Le côté positif de ce qui est maintenant, en fait je comprends pourquoi le code que j'ai écrit, grâce à vous. Merci.
OriginalL'auteur Jon Skeet
Avec struct/types de valeur ------- PAS
comme int, boolean, double, etc.
Avec les types de Référence -------- OUI
comme pour les classes, les objets, etc.
OriginalL'auteur Nikhil Agrawal
Tout d'abord, vous devez comprendre ce que vous faites dans votre code précédent
Mais ce n'est pas ce que vous voulez, ce que vous voulez, c'est quelque chose de plus comme cette
Ce que vous demandez est à la fois un Mauvais + Impossible
Mais ce que vous "Doit" demander est ce
Et cette approche est en fait tout à fait OK, et il utilise Les pointeurs, les Pointeurs ne sont tout simplement adresses dans la mémoire.
Remarque : Pour utiliser les pointeurs, vous devez Autoriser le code unsafe dans Project > Build
Dans le code, voici comment le faire :
OriginalL'auteur bigworld12
Que vous cherchez est un modèle de conception communément connu en tant qu'observateur. Un objet B suivra Un objet (ou 4 objets, car c'est ce besoin d'u) et lorsque A est modifié, B est notifié et mise à jour de son état en conséquence.
Dans le cas de C#, je voudrais utiliser les événements. Par exemple, définir un événement ValueChanged sur A. B serait à l'écoute de cet événement et de mettre à jour sa valeur.
l'objet expéditeur est le dernier élément qui a déclenché l'événement, vous pouvez garder une trace de celui-ci dans une autre variable. Voir le code mis à jour
OriginalL'auteur Samy Arous
Ici vous allez, vous pouvez changer le code dans des fonctions get et set pour faire à peu près tout. Vous ne pouvez pas déclarer une fonction, cependant.
comme je l'ai dit, vous pouvez écrire ce que vous voulez dans les fonctions get et set y compris le choix entre 4 variables. Mon origonal post était juste une syntaxe de mise en page pour vous de courir avec mais je l'ai montée pour mieux montrer mon point de vue, puisque vous n'avez pas les suivre là où j'allais.
OriginalL'auteur L3tha1Am6iti0n
Je ne suis pas tellement doué dans la programmation en C# mais je viens de trouver cette solution rapide: si vous faites une affectation dans une boucle for, votre première variable n'est pas modifiée.
Espère que cela aide
pourriez-vous essayer d'expliquer votre commentaire?
Le mec on lui a demandé comment le faire changer d', None comment faire en change PAS.
OriginalL'auteur ironzionlion