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.
10 facts about Dynamic type:
- C# 4.0 allows a new static type called "dynamic".
- Any operation on the object of type dynamic resolve at runtime.
- The dynamic allows us to access the object, without knowing type of the object at compile time.
- Dynamic types are internally treated as System.Object.
- At compile time we declare a dynamic type but at run time we get a strongly typed object.
- Dynamic type gets escaped from compile type checking. But if any error, it caught at runtime.
- Dynamic type is assumed to perform any task at compile time.
- Variable of type dynamic compiled into type object. So, after compilation dynamic does not exist.
- Dynamic type does not support intelli-sense.
- Object of any language type could be treated as dynamic type provided they are capable of naturally dispatch them.
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:
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:
Explanation:
- In above code, I am defining a variable dobj of type dynamic.
- This type is resolved in type string at runtime.
- 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:
Explanation:
- GetType() operation on dynamic type is use to get the runtime type of the dynamic type.
- As output, we are getting System.String. This is runtime type of the dynamic type.
Dynamic type could be used with
- Local type.
- Function return type
- Properties
- Indexers
- Class type
- Function argument
- 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
- We will make a class SampleForDynamimc.
- There are two properties, one is of type string and another is of type dynamic.
- There is one method, and return type of this method is dynamic and it is taking an input parameter of the type dynamic.
- In Main class, we are making object of type dynamic. This is getting resolved SampleForDynamic type at run time.
- Calling the dynamic type method with dynamic type argument.
- Printing the output.
SampleForDynamic class
Operations are resolved at run time. So there is no information about operations or properties are available at run time.
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:
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.