Click here to Skip to main content
15,884,425 members
Articles / Programming Languages / C# 4.0
Tip/Trick

dynamic keyword - Represents an object whose operations will be resolved at runtime

Rate me:
Please Sign up or sign in to vote.
5.00/5 (3 votes)
15 May 2011CPOL 17.3K   2   5
dynamic keyword - Represents an object whose operations will be resolved at runtime
C#4.0 introduces a new type, dynamic.It is treated as System.Object, but in addition, any member access (method call, field, property, or indexer access, or a delegate invocation) or application of an operator on a value of such type is permitted without any type checking, and its resolution is postponed until run-time.

This is the one of the best example uses of dynamic:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace ConsoleApplication1
{
    public class Colour
    {
    }
    public class Red : Colour
    {
    }
    public class Green : Colour
    {
    }
    class Program
    {
        static void Main(string[] args)
        {
            Colour color = null;
            color = new Red();
            GetColour(color);
            color = new Green();
            GetColour(color);
            Console.ReadLine();
        }        

        static void GetColour(Colour color)
        {
            /* avoiding this lines
            if (color is Red)
            {
                Fill((Red)color);
            }
            if (color is Green)
            {
                Fill((Green)color);
            }
             * */
            //type checking has to be done at runtime.
            dynamic dynColour = color;
            Fill(dynColour);
        }
        static void Fill(Red red)
        {
            Console.WriteLine("RED");
        }
        static void Fill(Green green)
        {
            Console.WriteLine("GREEN");
        }
    }
}

VB
Output
RED
GREEN


The role of the C# compiler here is simply to package up the necessary information about “what is being done to dynColour” so that the runtime can pick it up and determine what the exact meaning of it is given an actual object dynColour. Think of it as deferring part of the compiler’s job to runtime.

License

This article, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)


Written By
Software Developer
India India



Hi I' Ambarish from India. I've three and half year of experience in application
development solutions.
Educational Qualification MCA -  from KristuJyoti College of management and technology (MG
University)

B.Sc (Physics) - from NSS College, Changanacherry (MG University)
Skill Set C#,winforms,asp.net,MVC 3, Java,Design Patterns,VB, Android,JQuery Mobile,SQL,MySqlUML.



Comments and Discussions

 
GeneralNot Visual Pin
Richard MacCutchan11-May-11 23:18
mveRichard MacCutchan11-May-11 23:18 
GeneralRe: Not Visual Pin
ambarishtv12-May-11 0:27
ambarishtv12-May-11 0:27 
GeneralRe: Not Visual Pin
Richard MacCutchan12-May-11 3:02
mveRichard MacCutchan12-May-11 3:02 

General General    News News    Suggestion Suggestion    Question Question    Bug Bug    Answer Answer    Joke Joke    Praise Praise    Rant Rant    Admin Admin   

Use Ctrl+Left/Right to switch messages, Ctrl+Up/Down to switch threads, Ctrl+Shift+Left/Right to switch pages.