Dynamic type in c# 4.0

No.of Views1149
Bookmarked0 times
Downloads 
Votes0
By  Dhananjay Kumar   On  16 Feb 2010 00:02:55
Tag : CSharp , Miscellaneous
Dynamic type in c# 4.0
emailbookmarkadd commentsprint

Images in this article missing? We recently lost them in a site migration. We're working to restore these as you read this. Should you need an image in an emergency, please contact us at info@codegain.com

 

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

C# 4.0 is all about Dynamic Programming and type.

Image loading...

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.

Image loading...

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:

Image Loaidng...

Program.cs

{codecitation class="brush: csharp; gutter: true;" width="650px"}

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);
}
}
}


{/codecitation}

Output:

Image loading...

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


{codecitation class="brush: csharp; gutter: true;" width="650px"}

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);
}
}


{/codecitation}

Output:

Image Loading....

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

1. Any object type can be converted into dynamic type implicitly.

{codecitation class="brush: csharp; gutter: true;" width="650px"}
dynamic dobj = 9;
dynamic dobj1 = " Dhananjay Kumar";
dynamic dobj3 = System.DateTime.Today;
{/codecitation}


2. Dynamic type could also get converted into any type implicitly

{codecitation class="brush: csharp; gutter: true;" width="650px"}

int i = dobj;
string s = dobj1;
string sd = dobj3;
{/codecitation}

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

Image Loading...

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

Image loading....

Program.cs

{codecitation class="brush: csharp; gutter: true;" width="650px"}


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 ;
}

}
}


{/codecitation}

Output:

Image Loading....

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.

Download Source Code


Thanks for reading my work. Till next reading, Happy Coding.


About the Author


Dhananjay Kumar
Description :I done my engineering from Anand Engineering college Agra in 2007. I am MCTS WCF, MCTS MOSS Development, I am MCTS Web Development . I am native of Jamshedpur. Currently Please feel free to contact me regarding any clarification of my article at Dhananjay.25july@gmail.com

Occupation : Software Engineer
Company : UST Global.
Location : India
Follow me at twitter : http://twitter.com/dhananjay25


 
Sign Up to vote for this article
 
About Author
 
Dhananjay Kumar
Occupation-Software Engineer
Company-Infosys Technolgies,Pune
Member Type-Gold
Location-India
Joined date-20 Jul 2009
Home Page-http://dhananjaykumar.net/
Blog Page-http://dhananjaykumar.net/
Dhananjay Kumar is Microsoft MVP on connected system. He blogs at http://dhananjaykumar.net/ . You can follow him http://twitter.com/debugmode_/ and reach him at dhananjay.25july@gmail.com
 
 
Other popularSectionarticles
Comments
There is no comments for this articles.
Leave a Reply
Title:
Display Name:
Email:
(not display in page for the security purphase)
Website:
Message:
Please refresh your screen using Ctrl+F5
If you can't read this number refresh your screen
Please input the anti-spam code that you can read in the image.
^ Scroll to Top