Desafio da Semana #4


DESAFIO DA SEMANA #4

Por: Roberto Alexis Farah

Oi pessoal! Essa semana um amigo me enviou um código em C# e questionou o comportamento do código, pois ele achou o comportamento incorreto. Achei o problema bem interessante e resolvi publicá-lo para vocês.

Eis o código:

using System;

using System.Collections.Generic;

using System.Text;

namespace Test

{

        public class StrangeStuff

        {

                private static String a = "";

                public static String makeStrangeStuff()

                {

                        a = "Anomaly";

                        try

                        {

                                return a;

                        }

                        finally

                        {

                        a = "Greater Anomaly";

                        }

                }

        }

       

       

        class Program

        {

                static void Main(string[] args)

                {

                        Console.WriteLine("{0}", StrangeStuff.makeStrangeStuff());

                }

        }

}

SINTOMA

O valor de “a” não é alterado quando makeStrangeStuff() retorna. Ou seja, StrangeStuff.makeStrangeStuff() retorna “Anomaly”.

PROBLEMA

Identifique o que faz com que esse sintoma ocorra, explique o comportamento, se é de fato algo esperado ou se a aplicação deveria proceder de modo diferente.

Particularmente o interessante desse problema é o entendimento do comportamento do código acima.

Na semana que vem colocarei a resposta.

Boa sorte!