SIGN UP MEMBER LOGIN:    
ARTICLE

Dynamic type in C# 4.0

Posted by Dhananjay Kumar Articles | Visual Studio 2010 July 26, 2009
This article will introduce dynamic type. This article will be giving samples on different usage of dynamic type in programming.
Reader Level:
Download Files:
 


Objective:

This article will introduce dynamic type. This article will be giving samples on different usage of dynamic type in programming.

Prerequisite: Visual Studio 2010

Dynamic type in c# 4.0

C# 4.0 is all about Dynamic Programming and type.

image1.gif

10 facts about Dynamic type:

  1. C# 4.0 allows a new static type called "dynamic".
  2. Any operation on the object of type dynamic resolve at runtime.
  3. The dynamic allows us to access the object, without knowing type of the object at compile time.
  4. Dynamic types are internally treated as System.Object.
  5. At compile time we declare a dynamic type but at run time we get a strongly typed object.
  6. Dynamic type gets escaped from compile type checking. But if any error, it caught at runtime.
  7. Dynamic type is assumed to perform any task at compile time.
  8. Variable of type dynamic compiled into type object. So, after compilation dynamic does not exist.
  9. Dynamic type does not support intelli-sense.
  10. Object of any language type could be treated as dynamic type provided they are capable of naturally dispatch them.

image2.gif

Usage:

This is used to call and consume object of dynamic type languages like Python and Ruby. Now C# could call object of any dynamic language in the type dynamic.

Sample 1:

image3.gif

Program.cs

using System;
using
System.Collections.Generic;
using
System.Linq;
using
System.Text;
namespace DynamicTypeSample1
{
    class Program
    {
        static void Main(string[] args)
        {
            dynamic dobj = "Hi I am Dynamic ";
            Console.WriteLine(dobj);
            Console.ReadKey(true);
        }
    }
}


Output:

image4.gif

Explanation:
  1. In above code, I am defining a variable dobj of type dynamic.
  2. This type is resolved in type string at runtime.
  3. We are printing the string value
To get the runtime type of the dynamic type, I am adding one line of code in above code as

class Program
    {
        static void Main(string[] args)
        {
            dynamic dobj = "Hi I am Dynamic ";
           
Type dobjtype = dobj.GetType();
            Console.WriteLine(dobjtype);
            Console.WriteLine(dobj);
            Console.ReadKey(true);
        }
    }


Output:

image5.gif

Explanation:
  1. GetType() operation on dynamic type is use to get the runtime type of the dynamic type.
  2. As output, we are getting System.String. This is runtime type of the dynamic type.

Dynamic type could be used with
  1. Local type.
  2. Function return type
  3. Properties
  4. Indexers
  5. Class type
  6. Function argument
  7. Type constraint.

Conversion on dynamic type
Any object type can be converted into dynamic type implicitly.

            dynamic dobj = 9;
            dynamic dobj1 = " Dhananjay Kumar";
            dynamic dobj3 = System.DateTime.Today;
Dynamic type could also get converted into any type implicitly

 
           int
i = dobj;
            string s = dobj1;
            string sd = dobj3;

Sample 2:

In this sample

  1. We will make a class SampleForDynamimc.
  2. There are two properties, one is of type string and another is of type dynamic.
  3. There is one method, and return type of this method is dynamic and it is taking an input parameter of the type dynamic.
  4. In Main class, we are making object of type dynamic. This is getting resolved SampleForDynamic type at run time.
  5. Calling the dynamic type method with dynamic type argument.
  6. Printing the output.

SampleForDynamic class

image6.gif

Operations are resolved at run time. So there is no information about operations or properties are available at run time.

image7.gif

Program.cs

using System;
using
System.Collections.Generic;
using
System.Linq;
using
System.Text;
namespace DynamicTypeSample1
{
    class Program
    {
        static void Main(string[] args)
        {
            dynamic obj = new SampleForDynamimc();
            obj.Name = " Mahesh Chand";
            obj.Sex = "Male";
            dynamic message =" Welcome to Dynamimc World ";
            dynamic result = obj.Getinformation(message);
            Console.WriteLine(result);
            Console.ReadKey(true);
        }
    }

    public class SampleForDynamimc
    {
        public dynamic Name { get; set; }
        public string Sex { get; set; }
        public dynamic Getinformation(dynamic param1)
        {
            return Name +"\t" + Sex + "\t"+ param1 ;
        }
    }
}

Output:

image8.gif

Conclusion

I have talked about, dynamic type. This is a feature of c#4.0 I have shown two samples also on how to use dynamic type.

Thanks for reading my work.

Till next reading, Happy Coding.

share this article :
post comment
 

Thank you :)

Posted by Dhananjay Kumar Feb 05, 2010

Your articles are excellent. Please keep up the good work
Your graphical presentation of the tech topics makes it  very interesting
Please keep up  the good work

Posted by ram Nov 21, 2009
Become a Sponsor
PREMIUM SPONSORS
  • ceTE software specializes in components for dynamic PDF generation and manipulation. The DynamicPDF™ product line allows you to dynamically generate PDF documents, merge PDF documents and new content to existing PDF documents from within your applications.
    The leading .NET charting control now features PDF, Flash and Silverlight export, visualization of large datasets and more. Deliver true charting functionality to your BI, Scorecard, Presentation or Scientific apps. Download evaluation now.
Nevron Gauge for SharePoint
Become a Sponsor