Friday, July 27, 2012

.NET 3.5 FEAUTRES


As we know, .NET Framework 2.0 uses CLR version 2.0.

.NET 3.0 and 3.5 are also based on CLR 2.0 and adds some new features like WCF (3.0), WPF (3.0), LINQ (3.5).

To get a general idea of the difference and relationship between .NET 2.0, 3.0 and 3.5, please refer to:




I'll describe the changes in ASP.NET 3.5 as one of two categories: ASP.NET 3.5 specific features (new controls, for example) and ASP.NET-related Visual Studio 2008 enhancements such as nested master page support.

ASP.NET 3.5
In this article I'll review these new ASP.NET 3.5 specific features:
• The ListView control
• The DataPager control
• The LinqDataSource
• Integrated AJAX support
• Improved designer support for AJAX control extenders
Likewise, in this article I'll review these new ASP.NET 3.5-related Visual Studio 2008 enhancements:
• Nested Master Page support
• Multi-Framework Targeting
• Enhanced Web design experience
• JavaScript IntelliSense
• JavaScript debugging
• CSS Properties window
• Manage Styles tool window

C# 3.5 FEATURES:-
Implicit Type Variable:-
This is the new feature of .NET where the data type is determined at debug time.
Eg. As below:-

Implicitly typed variables:
var i = 10;
var d = 10.5;
var str = "India";
var arr = new int[]{ 1, 2, 3 };
foreach (var item in arr)
{
          Console.WriteLine(item.ToString());
}
Console.ReadLine();
Restriction of this data type is it can not be null or uninitialized
//Restriction
var j;
var k = null;

Object Initializer:-
Object initializer is concept where value of the property can be initialize at the time of creating object.
public class Point
{
public int X { get; set; }
public int Y { get; set; }
}
//Object Initializer is used to initialize the value of peroperty as below
Point p = new Point {X = 10, Y = 20 };
//the older version of initializing values of property
//p.X = 10;
//p.Y = 20;

Collection Initializer:
List intList = new List(){1,2,3,4,5,6};
//Old way to initialize value
//intList.Add(1);
//intList.Add(2);
//intList.Add(3);
//intList.Add(4);
//intList.Add(5);
//intList.Add(6);
// following the same thing can be achieved using object initializer
List intPoint = new List()
{
new Point{X=1,Y=2},
new Point{X=4,Y=4}
};

Anonymous Type:-
Anonymous type is concept where without explicitly defined the type first you can initialize the value. For e g:- we don’t have customer table but by using following code we can initialize the value of customer. The complier on the fly create an data type to hold customer object.
//Anonymous type
var customer = new { customerId = 1, Name = "Microsoft" };
var customer1 = new { customerId = 2, Name = "IBM" };
var customer2 = new { Id = 2, Name = "IBM" };
Console.WriteLine(customer.customerId);
Console.WriteLine(customer.Name);

Lamda Expression:-
A lambda expression is an anonymous function that can contain expressions and statements, and can be used to create delegates or expression tree types.
All lambda expressions use the lambda operator =>, which is read as "goes to". The left side of the lambda operator specifies the input parameters (if any) and the right side holds the expression or statement block. The lambda expression x => x * x is read "x goes to x times x."
public delegate int MyDelegate(int args);
public delegate int Calculator(int args1,int args2);
public delegate void SimpleDelegate();
//Following is the way to create delegate
MyDelegate md = delegate(int x){return x * x;};
//Following is the way to create delegate using Lamda Expression
MyDelegate md = x => x * x;
Console.WriteLine(md(5));
Console.ReadLine();
//Following is the way to create delegate using Lamda Expression having two perameter
Calculator calc = (x, y) => x + y;
Console.WriteLine(calc(5,25));
//Following is the way to create delegate using Lamda Expression having multiple statment
SimpleDelegate sd = () => { Console.WriteLine("Hello World"); Console.ReadLine(); };
sd();
Console.WriteLine(sd());

Extenssion Mehtods:-
Extension methods enable you to "add" methods to existing types without creating a new derived type, recompiling, or otherwise modifying the original type. Extension methods are a special kind of static method, but they are called as if they were instance methods on the extended type. For eg. You don’t have RemoveNonNumberic method in string. If you want to extent the string class to have RemoveNonNumberic function then you need to do following:-
1) Create a static class implementing the functionality of Removing non numeric value.
public static class StringExtension
{
public static string RemoveNonNumeric(this string str)
{
StringBuilder strBldr = new StringBuilder();
for (int i = 0; i < str.Length; i++)
{
if (char.IsNumber(str[i]))
{
strBldr.Append(str[i]);
}
}
return strBldr.ToString();
}
}
2) Incorporate the class as below:-
Using StringExtension;
3) The string function can be used as below:-
string phone = "+91-022-42042042";
Console.WriteLine(phone.RemoveNonNumeric());
Console.ReadLine();

No comments: