Tuesday, December 23, 2014

#EvilCode 0001 : Lambda and Ref/Out.

What would be output of following ?

        static void Main(string [] args)
        {
            List< int> numlist = new List< int>() {1,2, 3, 4, 5, 6, 7 };
            CalculateAndPrint( ref numlist);
        }

        public static void CalculateAndPrint( ref List< int> Num)
        {
            var n = Num.Where(d => d > Num[2]);

            foreach ( var item in n)
            {
                Console.WriteLine(item);
            }
        }

The most obvious answer is 4,5,6,7. However that's not. This code refuses to compile because Lamba expressions  cannot accept variables that are declared in an outer scope.