Exploring Some Of The Probable C# 6.0 Features

By Anoop Madhusudanan

Vote on HN
In my last post, we explored how to create a tiny Roslyn app to compile C# code, to test out some of the new C# 6.0 features.

Read it here

Now go ahead and play with some of the preview features. Try things out. Create a file with some C# 6.0 sugar and compile it with our above app. You can explore the language features that are completed in this list, from the Roslyn documentation in CodePlex


Here is some quick code that demos some of the features

1- Support for Primary Constructors and Auto Property Assignments

Primary constructors allow you to specify arguments as part of your class declaration itself. Also, now C# supports assigning to Auto properties. Together, you may use it to initialise classes, as shown below.

//Test.csfile 
//C# 6.0 may support Primary Constructors and Assignment To Auto Properties

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace CSharp6Test
{

   //Feature: Primary Constructors or Class with arguments ;)
    class Point(int x,int y)
    {
        //Feature: Look ma, you can assign to auto properties now
        public int X {get;set;} =x;
        public int Y {get;set;} =y;

    }

    class MainClass
    {
        public static void Main() 
        {
        
            //Using Primary Constructor
            var p=new Point(1,3);

            //Reading the values back from the properties
            Console.WriteLine("X={0}",p.X);
            Console.WriteLine("Y={0}",p.Y);
        }
    }
}



2 – Invocation of static methods directly

Another completed feature seems like the support for direct invocation of static methods directly, with out the full name space

//Just import the namespace
using System.Console;

namespace CSharp6Test
{
    class Class1
    {
   public static void Main() 
    {
  //And use the static methods now directly  
  WriteLine("Look ma, now you can use static methods like this...");
    }
    }

}
And that works too.

3 – Dictionary initializers and indexed member access

Say good bye to the dirty strings when working with dictionary objects and collections. Let us see if the new $ Indexed member syntax is going to work. See it here.

using System;
using System.Collections.Generic;
using System.Linq;
using System.Console;

namespace CSharp6Test
{
    class Class1
    {
  public static void Main() 
    {
      //See the new dictionary initializer syntax
   var d=new Dictionary<string,int>{["item1"]=1,["item2"]=2}; 
   
   //This is even better
   //var d=new Dictionary<string,int>{$item1=1,$item2=2}; 
   
   //And now you can access indexed members using $variablename syntax
   
   //No more dirty strings
   WriteLine("{0}",d.$item1);
   WriteLine("{0}",d.$item2);
    }
    }

}

Try compiling the above apps with our Roslyn test app (Get it here). Compile them :)  Leaving all the other features up to you to try out. Happy Coding!!
© 2012. All Rights Reserved. Amazedsaint.com