.NET, Architecture, ALM, Cloud

Publicité

Copie et référence

Que va afficher le programme suivant ? : 

        static void Main(string[] args)
        {
            int a = 2;
            string s = "Main";

            Method1(a, s);
            Console.WriteLine(a);
            Console.WriteLine(s);

            Method2(ref a, ref s);
            Console.WriteLine(a);
            Console.WriteLine(s);

            Action invoker = () =>
            {
                a = 5;
                s = "Invoker";
            };
            invoker();
            Console.WriteLine(a);
            Console.WriteLine(s);
        }

        public static void Method1(int a, string s)
        {
            a = 10;
            s = "Method1";
        }

        public static void Method2(ref int a, ref string s)
        {
            a = 20;
            s = "Method2";
        }

 

  • a) 10
    Method1
    20
    Method2
    5
    Invoker
    b) 2
    Main
    2
    Main
    5
    Invoker
    c) 2
    Main
    20
    Method2
    5
    Invoker
  • d) 2
    Main
    20
    Method2
    20
    Method2
Publicité
Retour à l'accueil
Partager cet article
Repost0
Pour être informé des derniers articles, inscrivez vous :
Commenter cet article
M
<br /> Bonne réponse : c.<br /> <br /> <br /> Par défaut dans une méthode les paramètres sont passés en copie et non en référence. Pour les passer en référence, il faut utiliser le mot clef ref.<br /> <br /> <br /> Les méthodes lambdas peuvent utiliser une variable externe qui sera utilisé en référence. Par contre les paramètres d'une méthode lambda (non vu ici) sont visible que par la méthode et il n'est<br /> donc pas possible d'y appliquer le mot clef ref.<br />
Répondre