Some of the new stuff in .Net 3.x simply/examplyfied.


Just thought I put together a small class that shows some of the new features in .Net 3.x


 


I have no intention of trying to explain how it works in detail (there is good documentation out there), you should see this more as a reference.


Also, this is not a full list of all that is new, no LINQ for example; it is more to show the ones that may save you typing J


 


In this class:


Auto-Implemented Properties


Anonymous Types


Object and Collection Initializer


Extension Methods


Lambda Expressions 


 


using System;


using System.Collections;


using System.Collections.Generic;


using System.Linq;


using System.Text;


 


namespace SomeDemoStuff


{


    class Program


    {


        /*********************************************************


        Auto-Implemented Properties


        http://msdn.microsoft.com/en-us/library/bb384054.aspx


        *********************************************************/


        // Oldschool


        private int oldAge;


        public int OldAge


        {


            get { return oldAge; }


            set { oldAge = value; }


        }


        // Newschool


        public int NewAge{get; set;}


        // Note, you can't mix old/new, ie:


        //public int NewAge { get; set{value + 4}; }


 


        static void Main(string[] args)


        {


            /*********************************************************


            Anonymous Types


            http://msdn.microsoft.com/en-us/library/bb397696.aspx


            *********************************************************/


            for (int i = 20; i < 25; i++)


            {


                var anonymousPerson = new { Age = i, AgeInTenYears = i + 10 };


                Console.WriteLine("Age now {0}, age in ten years {1}", anonymousPerson.Age, anonymousPerson.AgeInTenYears);


            }


            // Can only access it within the scope, so the following fails since it is outside scope:


            //int i = person.Age;


 


            /*********************************************************


            Object and Collection Initializers


            http://msdn.microsoft.com/en-us/library/bb384062.aspx


            *********************************************************/


            // *** Object Initializer ***


            // This uses the Person class below. Which uses auto implemented properties


            // Old way


            Person oldPerson = new Person();


            oldPerson.Age = 29;


            oldPerson.Name = "Michael";


            // New way


            Person newPerson = new Person { Age = 30, Name = "Michael" };


            // *** Collection Initializer ***


            List<string> names = new List<string> { "Michael", "John", "Steve", "Charles" };


 


            /*********************************************************


            Extension Methods


            http://msdn.microsoft.com/en-us/library/bb383977.aspx


            *********************************************************/


            // The short story, this gives you the ability to add methods to existing types.


            int age = 29;


            // Old way


            int newAge = AddFive(age);


            Console.WriteLine("Current age {0}, age in 5 years {1}", age, newAge);


            // New way - adding method to type.


            Console.WriteLine("Current age {0}, age in 10 years {1}", age, age.AddTen());


 


            /*********************************************************


            Lambda Expressions 


            http://msdn.microsoft.com/en-us/library/bb397687.aspx


            *********************************************************/


            // The lambda expression reads as "goes to".


            // The leftsid is the input parameter, the right one is the expression.


            // In the case below, persons over 30 goes into the var variable called personsOver30


            // (This example uses Object/List intitializers and auto matic properties as well as Extension methods (persons.Where))


            List<Person> persons = new List<Person>


            {


                new Person{Age = 10, Name="Pete"},


                new Person{Age = 20, Name="John"},


                new Person{Age = 30, Name="Steve"},


                new Person{Age = 40, Name="Michael"}


            };


 


            var personsOver30 = persons.Where(p => p.Age >= 30);


            foreach (Person p in personsOver30)


                Console.WriteLine(p.ToString());


        }


 


        // Old method


        public static int AddFive(int age)


        {


            return age + 5;


        }


    }


 


    class Person


    {


        public int Age { get; set; }


        public string Name { get; set; }


        public override string ToString()


        {


            return string.Format("Name: {0}, Age: {1}", Name, Age);


        }


    }


 


    static class ExtensionMethods


    {


        public static int AddTen(this int inValue)


        {


            return inValue + 10;


        }


    }


}


 


 


Skip to main content