Posts Tagged ‘c#’

Sometimes simple program surprises me

December 18, 2010 3 comments

I was really surprised today by behavior of following simple program.

5+5=9? How come double happy string was de-duplicated?

static void Main()
    var original = new List<string>()   
        { "I", "wish", "you", "merry", "christmas"  };
    var additions = new List<string>()  
        { "merry", "christmas", "and", "happy", "happy", "new", "year" };
    var newAdditionsOnly = additions.Where(s => !original.Contains(s));
    PrintItems("original", original);                   
        // original has 5 items: I, wish, you, merry, christmas
    PrintItems("newAdditionsOnly", newAdditionsOnly);   
        // newAdditionsOnly has 5 items: and, happy, happy, new, year    
        // adding 5 items to original
    PrintItems("original", original);                   
        // original has 9 items: I, wish, you, merry, christmas, and, happy, new, year
static void PrintItems(string itemsName, IEnumerable<string> items)
    Console.WriteLine("{0} has {1} items: {2}", 
                      string.Join(", ", items));

After a while I realized what’s going on… can you see it immediately?

Categories: c# Tags: ,