185 votes

C #: attribuer la même valeur à plusieurs variables dans une seule instruction

Existe-t-il un moyen (juste par curiosité parce que je suis tombé sur plusieurs assignations de même valeur à plusieurs variables aujourd'hui) en C # d'attribuer une valeur à plusieurs variables à la fois dans une seule déclaration?

Quelque chose dans ce sens (pseudocode):

 int num1 = 1;
int num2 = 1;

num1 & num2 = 5;
 

Probablement pas, mais je pensais que je valais la peine de demander si quelque chose de similaire est réellement possible!

297voto

Pierre-Alain Vigeant Points 9797

C'est aussi simple que:

num1 = num2 = 5;

Lors de l'utilisation d'un objet de propriété au lieu de la variable, il est intéressant de savoir que l' get accesseur de la valeur intermédiaire n'est pas appelé. Seulement l' set accesseur est invoqué pour tous les biens accessibles dans l'assignation de la séquence.

Prenons l'exemple d'une classe qui écrire dans la console à chaque fois que l' get et set accesseur sont invoqués.

static void Main(string[] args)
{
    var accessor1 = new AccessorTest();
    var accessor2 = new AccessorTest();

    accessor1.Value = accessor2.Value = 5;

    Console.ReadLine();
}

public class AccessorTest
{
    private int _Value;

    public int Value
    {
        get
        {
            Console.WriteLine("AccessorTest.Value.get {0}", _Value);
            return _Value;
        }
        set
        {
            Console.WriteLine("AccessorTest.Value.set {0}", value);
            _Value = value;
        }
    }
}

Ce sera de sortie

AccessorTest.Value.set 5
AccessorTest.Value.set 5

Ce qui signifie que le compilateur va affecter la valeur de toutes les propriétés et il ne sera pas re-lecture de la valeur à chaque fois qu'il est attribué.

59voto

aaronb Points 761

Cela voudra que vous vouliez:

 int num1, num2;
num1 = num2 = 5;
 

'num2 = 5' affectation retournera la valeur assignée.

Cela vous permet de faire des choses folles comme num1 = (num2 = 5) +3; qui assigneront 8 à num1, bien que je ne vous recommande pas de le faire car il est très difficile à lire.

36voto

Zain Ali Points 3813
 int num1=5,num2=5
 

Déclarer et assigner des variables dans le même état

11voto

SLaks Points 391154

Essaye ça:

 num1 = num2 = 5;
 

Notez que cela ne fonctionnera pas en VB.

7voto

Daniel Points 874

num1 = num2 = 5

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X