рд╕реА # рдПрдХ рд╕рд░рд▓ рднрд╛рд╖рд╛ рд╣реИ, рдЗрд╕рдХреА рд╕рд╛рджрдЧреА рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж PHP рднреА рд░рд╣рддрд╛ рд╣реИред рд▓реЗрдХрд┐рди рдПрдХ рд╣реА рд╕рдордп рдореЗрдВ, рдпрд╣ рдмрд╣реБрдд рдХрд╛рд░реНрдпрд╛рддреНрдордХ рд╣реИ, рдФрд░ рдПрдХ "рд╣рд╛рдЗрдмреНрд░рд┐рдб" рднрд╛рд╖рд╛ рдХреА рд╕реНрдерд┐рддрд┐ рд╣реИ, рдЬреЛ рд╡рд┐рднрд┐рдиреНрди рдкреНрд░рддрд┐рдорд╛рдиреЛрдВ рдХреЛ рдЬреЛрдбрд╝рддреА рд╣реИ, рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рдХреА рдЕрдирд┐рд╡рд╛рд░реНрдп рд╢реИрд▓реА рдФрд░ рдХрд╛рд░реНрдпрд╛рддреНрдордХ рджреЛрдиреЛрдВ рдХреЗ рд▓рд┐рдП рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рд╕рдорд░реНрдерди рд╣реИред
рдХрд┐рд╕реА рднреА рднрд╛рд╖рд╛ рдХреА рддрд░рд╣, рд╢рд╛рд░реНрдк рдХреА рдЕрдкрдиреА рд╕реВрдХреНрд╖реНрдорддрд╛рдПрдВ, рд╡рд┐рд╢реЗрд╖рддрд╛рдПрдВ, "рдиреБрдХрд╕рд╛рди" рдФрд░ рдЕрд▓реНрдкрдЬреНрдЮрд╛рдд рд╡рд┐рд╢реЗрд╖рддрд╛рдПрдВ рд╣реИрдВред рдореЗрд░рд╛ рдХреНрдпрд╛ рдорддрд▓рдм рд╣реИ? рдХрдЯреМрддреА рдХреЗ рддрд╣рдд рдкрдврд╝реЗрдВ ...
рдкреИрдХреЗрдЬрд┐рдВрдЧ рдФрд░ рдЕрдирдкреИрдХрд┐рдВрдЧ - рд╣рд░ рдХреЛрдИ рдЬрд╛рдирддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рд╣рд░ рдХреЛрдИ рдирд╣реАрдВ
рд╕рдВрджрд░реНрдн рдкреНрд░рдХрд╛рд░ (рдСрдмреНрдЬреЗрдХреНрдЯ, рдбрд╛рдпрдиреЗрдорд┐рдХ, рд╕реНрдЯреНрд░рд┐рдВрдЧ, рдХреНрд▓рд╛рд╕, рдЗрдВрдЯрд░рдлрд╝реЗрд╕, рдбреЗрд▓реАрдЧреЗрдЯ) рдкреНрд░рдмрдВрдзрд┐рдд рд╣реАрдк рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВ, рдорд╛рди рдкреНрд░рдХрд╛рд░ (рд╕реНрдЯреНрд░рдХреНрдЪрд░рд▓, рдПрдирдо, рдмреВрд▓, рдмрд╛рдЗрдЯ, рдЪрд╛рд░, рдЗрдВрдЯ, рдлреНрд▓реЛрдЯ, рдбрдмрд▓) рдПрдкреНрд▓реАрдХреЗрд╢рди рд╕реНрдЯреИрдХ рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВ (рдЬрдм рдореВрд▓реНрдп рдкреНрд░рдХрд╛рд░ рдХреЛ рдЫреЛрдбрд╝рдХрд░) рдПрдХ рд╡рд░реНрдЧ рдХреНрд╖реЗрддреНрд░ рд╣реИ)ред рдПрдХ рдорд╛рди рдкреНрд░рдХрд╛рд░ рдХреЛ рд╕рдВрджрд░реНрдн рдкреНрд░рдХрд╛рд░ рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдХрд░рдирд╛ рдПрдХ рдирд┐рд╣рд┐рдд рдмреЙрдХреНрд╕рд┐рдВрдЧ рдСрдкрд░реЗрд╢рди рдХреЗ рд╕рд╛рде рд╣реЛрддрд╛ рд╣реИ - рдПрдХ рд░реИрдкрд░ рд╡рд░реНрдЧ рдореЗрдВ рдореВрд▓реНрдп рдкреНрд░рдХрд╛рд░ рдХреА рдПрдХ рдкреНрд░рддрд┐ рдбрд╛рд▓рддреЗ рд╣реБрдП, рдЬрд┐рд╕рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рдвреЗрд░ рдкрд░ рд╕рдВрдЧреНрд░рд╣реАрдд рд╣реЛрддрд╛ рд╣реИред рдкреИрдХреЗрдЬрд┐рдВрдЧ рдкреНрд░рдХрд╛рд░ рд╕реАрдПрд▓рдЖрд░ рджреНрд╡рд╛рд░рд╛ рдЙрддреНрдкрдиреНрди рд╣реЛрддрд╛ рд╣реИ рдФрд░ рд╕рдВрдЧреНрд░рд╣реАрдд рдореВрд▓реНрдп рдкреНрд░рдХрд╛рд░ рдХреЗ рдЗрдВрдЯрд░рдлреЗрд╕ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рддрд╛ рд╣реИред рдПрдХ рд╕рдВрджрд░реНрдн рдкреНрд░рдХрд╛рд░ рдХреЛ рдПрдХ рдорд╛рди рдкреНрд░рдХрд╛рд░ рдореЗрдВ рдмрджрд▓рдиреЗ рд╕реЗ рдПрдХ рдЕрдирдмреЙрдХреНрд╕рд┐рдВрдЧ рдСрдкрд░реЗрд╢рди рдХрд╛ рдХрд╛рд░рдг рдмрдирддрд╛ рд╣реИ - рдкреИрдХреЗрдЬ рд╕реЗ рдореВрд▓реНрдп рдкреНрд░рдХрд╛рд░ рдХреА рдПрдХ рдкреНрд░рддрд┐ рдирд┐рдХрд╛рд▓рддрд╛ рд╣реИ рдФрд░ рдЗрд╕реЗ рд╕реНрдЯреИрдХ рдкрд░ рдбрд╛рд▓рддрд╛ рд╣реИред
using System;
class Program
{
static void Main()
{
int val = 5;
object obj = val; //
int valUnboxed = ( int )obj; //
}
}
рдЕрдиреБрд░реВрдк рдЖрдИрдПрд▓ рдХреЛрдб:
.locals init ([0] int32 val, [1] object obj, [2] int32 valUnboxed)
IL_0000: nop
IL_0001: ldc.i4.5
IL_0002: stloc.0
IL_0003: ldloc.0
IL_0004: box [mscorlib]System.Int32
IL_0009: stloc.1
IL_000a: ldloc.1
IL_000b: unbox.any [mscorlib]System.Int32
IL_0010: stloc.2
IL_0011: ret
рдкреИрдХреЗрдЬрд┐рдВрдЧ рдФрд░ рдЕрдирдкреИрдХрд┐рдВрдЧ рдЕрдкреЗрдХреНрд╖рд╛рдХреГрдд рдзреАрдореЗ рд╕рдВрдЪрд╛рд▓рди (рдирдХрд▓ рдХрд░рдирд╛) рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЬрдм рднреА рд╕рдВрднрд╡ рд╣реЛ, рдЙрдирд╕реЗ рдмрдЪреЗрдВред рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХреЛрдб рдкреИрдХреЗрдЬрд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рдЧреИрд░-рд╕реНрдкрд╖реНрдЯ рдорд╛рдорд▓реЛрдВ рдХреЛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рддрд╛ рд╣реИ:
using System;
class Program
{
static void Main()
{
// 1.
IComparable< int > iComp = 1;
// 2. enum System.Enum
Enum format = UriFormat.Unescaped;
// 3. dynamic
dynamic d = 1;
}
}
Msdn рдореЗрдВ, рдЙрди рдорд╛рдорд▓реЛрдВ рдореЗрдВ рдореВрд▓реНрдп рдкреНрд░рдХрд╛рд░реЛрдВ рд╕реЗ рдмрдЪрдиреЗ рдХреА рд╕рд┐рдлрд╛рд░рд┐рд╢ рдХреА рдЬрд╛рддреА рд╣реИ рдЬрдм рдЙрдиреНрд╣реЗрдВ рдХрдИ рдмрд╛рд░ рдкреИрдХ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЧреИрд░-рд╕рд╛рд░реНрд╡рднреМрдорд┐рдХ рд╕рдВрдЧреНрд░рд╣ рдХрдХреНрд╖рд╛рдУрдВ (ArrayList) рдореЗрдВред рдЬреЗрдиреЗрд░рд┐рдХ рдХрд▓реЗрдХреНрд╢рди (System.Collections.Generic namespace) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╡реИрд▓реНрдпреВ рдЯрд╛рдЗрдк рд░реИрдкрд┐рдВрдЧ рд╕реЗ рдмрдЪрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдпрд╣ рднреА рдпрд╛рдж рд░рдЦрдирд╛ рдЪрд╛рд╣рд┐рдП рдХрд┐ рдЖрдИрдПрд▓-рдХреЛрдб рд╕реНрддрд░ рдкрд░ рдЧрддрд┐рд╢реАрд▓ рдПрдХ рд╣реА рд╡рд╕реНрддреБ рд╣реИ, рдХреЗрд╡рд▓ (рд╣рдореЗрд╢рд╛ рдирд╣реАрдВ) рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХреЗ рд╕рд╛рде рдЯреИрдЧ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред
рдореЗрдордиреЗ рдореЗрдВ рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐ - рджреБрд░реНрднрд╛рд╡рдирд╛рдкреВрд░реНрдг рдмрдВрдж рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ
рд╣рдо рд▓рдВрдмреЛрджрд░ рднрд╛рд╡реЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП рдкреБрдирд░рд╛рд╡рд░реНрддреА рддрдереНрдпрд╛рддреНрдордХ рдЧрдгрдирд╛ рдХреЗ рд╢рд╛рд╕реНрддреНрд░реАрдп рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреА рдУрд░ рдореБрдбрд╝рддреЗ рд╣реИрдВ:
using System;
using System.Numerics;
class Program
{
static void Main()
{
Func< int , BigInteger> fact = null ;
fact = x => x > 1 ? x * fact(x - 1) : 1;
}
}
рд╣рдо рдЬрд╛рдирддреЗ рд╣реИрдВ рдХрд┐ рдПрдХ рд▓реИрдореНрдмрдбрд╛ рдкрд░реНрдпрд╛рд╡рд░рдг рдЪрд░ (рдмрдВрдж) рдкрд░ рдХрдмреНрдЬрд╛ рдХрд░рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рдХреЗ рдХрд╛рд░рдг рдЦреБрдж рдХреЛ рд╕рдВрджрд░реНрднрд┐рдд рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реИред рд╣рдо рдЬрд╛рдирддреЗ рд╣реИрдВ рдХрд┐ рдХреИрдж рдХреА рдЧрдИ рд╡рд╕реНрддреБрдУрдВ рдХреЛ рдПрдХ рд▓рдВрдмреЛрджрд░ рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдХреЗ рд╕рдВрджрд░реНрдн рдХреЗ рдмрд╛рд╣рд░ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдФрд░ рднрд╛рд╖рд╛ рдореЗрдВ рдЗрд╕ рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЛ рдУрд╡рд░рд░рд╛рдЗрдб рдХрд░рдиреЗ рдХреА рдХреЛрдИ рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рдХреНрд╖рдорддрд╛ рдирд╣реАрдВ рд╣реИред рдпрд╣ рд╕реНрдкрд╖реНрдЯ рд╣реИ рдХрд┐
рд╕рд╛рдорд╛рдиреНрдп рд╕реНрдерд┐рддрд┐ рдореЗрдВ, рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рдмрд┐рдВрджреБ рдХреЙрдореНрдмрд┐рдиреЗрдЯрд░ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рд╕реЗ рдкреНрд░рд╕реНрддреБрдд рд╕рдорд╕реНрдпрд╛ рд╣рд▓ рд╣реЛ рдЬрд╛рддреА рд╣реИ:
using System;
using System.Numerics;
class Program
{
static void Main()
{
var fact = YPointCombinator.Create< int , BigInteger>(f => (n) => n > 1 ? n * f(n - 1) : 1);
var power = YPointCombinator.Create< int , int , BigInteger>(f => (x, y) => y > 0 ? x * f(x, y - 1) : 1);
}
}
public static class YPointCombinator
{
public static Func<T1, T2> Create<T1, T2>(Func<Func<T1, T2>, Func<T1, T2>> f)
{
return f(r => Create( f )( r ));
}
public static Func<T1, T2, T3> Create<T1, T2, T3>(Func<Func<T1, T2, T3>, Func<T1, T2, T3>> f)
{
return f((r1, r2) => Create(f)(r1, r2));
}
}
рдирд┐рдЬреА рдФрд░ рдкреНрд░рддрд┐рдмрд┐рдВрдм рдХреНрд╖реЗрддреНрд░, рдпрд╛ рд╣рдо рдЖрдкрдХреЗ OOP рдкрд░ рдереВрдХрддреЗ рд╣реИрдВ
рдкреНрд░рддрд┐рдмрд┐рдВрдм рддрдВрддреНрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ, рдЖрдк рдХрд┐рд╕реА рд╡рд░реНрдЧ рдХреЗ рдирд┐рдЬреА рдХреНрд╖реЗрддреНрд░ рдХрд╛ рдорд╛рди рднреА рдмрджрд▓ рд╕рдХрддреЗ рд╣реИрдВред
рдпрд╣ рд╕реНрдкрд╖реНрдЯ рд╣реИ рдХрд┐ рдЗрд╕ рдирд┐рд░реНрдорд╛рдг рдХреЛ рдХреЗрд╡рд▓ рдЖрдкрд╛рддрдХрд╛рд▓ рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдПрдирдХреИрдкреНрд╕реБрд▓реЗрд╢рди рдХреЗ рд╕рд┐рджреНрдзрд╛рдВрдд рдХрд╛ рдкрд╛рд▓рди рдХрд░рдирд╛ред
using System;
using System.Reflection;
class Sample
{
private string _x = "No change me!" ;
public override string ToString()
{
return _x;
}
}
class Program
{
static void Main()
{
var sample = new Sample();
typeof (Sample).GetField( "_x" , BindingFlags.NonPublic | BindingFlags.Instance)
.SetValue(sample, "I change you..." );
Console .Write(sample);
Console .ReadKey();
}
}
UPD: рдЬреИрд╕рд╛ рдХрд┐ рд╕рд╣реА рдврдВрдЧ рд╕реЗ рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдирд┐рдЬреА рдХреНрд╖реЗрддреНрд░ рдХреЛ рдмрджрд▓рдиреЗ рдореЗрдВ рдХреЗрд╡рд▓ рддрднреА рд╕рдлрд▓рддрд╛ рдорд┐рд▓реЗрдЧреА рдЬрдм рдЕрд╕реЗрдВрдмрд▓реА рдПрдХ рдХреЛрдб рд╕рдореВрд╣ рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рд╣реЛ, рдЬрд┐рд╕рдореЗрдВ рдЖрд╡рд╢реНрдпрдХ рдЕрдиреБрдорддрд┐ рд╣реЛред рдЖрдк рд╡рд░реНрдЧ (рд╡рд┐рдзрд┐) рдХреЛ рдХреБрдЫ рдЗрд╕ рддрд░рд╣ рд╕реЗ рдЪрд┐рд╣реНрдирд┐рдд рдХрд░рдХреЗ рдЗрд╕ рдЕрдзрд┐рдХрд╛рд░ рдХреЛ рдШреЛрд╖рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:
[System.Security.Permissions.ReflectionPermission(System.Security.Permissions.SecurityAction.Assert)]
.NET рд╕реБрд░рдХреНрд╖рд╛ рдкреНрд░рдгрд╛рд▓реА рдХреЗ рд╕рд╛рде рд╕рдм рдХреБрдЫ рд╕рд░рд▓ рдирд╣реАрдВ рд╣реИ, рдФрд░ .NET 4 рдореЗрдВ рдЗрд╕рдореЗрдВ рдмрдбрд╝реЗ рдмрджрд▓рд╛рд╡ рд╣реБрдП рд╣реИрдВ ред
рдмрддрдЦ рдЯрд╛рдЗрдкрд┐рдВрдЧ рдФрд░ рдлреЙрд░реЗрд╕реНрдЯ рд▓реВрдк
рдлрд╝реЙрд░реНрдЪ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП рдПрдХ рд╡рд░реНрдЧ рдХреЗ рдЙрджрд╛рд╣рд░рдг рдХреЗ рддрддреНрд╡реЛрдВ рдкрд░ рдкреБрдирд░рд╛рд╡реГрддрд┐ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП, рдЗрд╕рдореЗрдВ GetEnumerator () рд╡рд┐рдзрд┐ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рд╣реИред
using System;
using System.Collections.Generic;
class Sample
{
public IEnumerator< int > GetEnumerator()
{
for ( var i = 0; i < 10; ++i)
yield return i;
}
}
class Program
{
static void Main()
{
foreach ( var t in new Sample())
Console .WriteLine(t);
Console .ReadKey();
}
}
рддрдерд╛рдХрдерд┐рдд "рдбрдХ" рдЯрд╛рдЗрдкрд┐рдВрдЧ рдХреА рдпрд╣ рдЫреЛрдЯреА рд╕реА рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐, рдЖрдорддреМрд░ рдкрд░ рдЧрддрд┐рд╢реАрд▓ рднрд╛рд╖рд╛рдУрдВ рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХреА рдЬрд╛рддреА рд╣реИ, рд╕реА # рдореЗрдВ рднреА рд╣реЛрддреА рд╣реИред
рдЕрдирд╛рдо рдкреНрд░рдХрд╛рд░ - рдЕрдзрд┐рдХ рд╕рдВрднрд╡ рд╣реИ
рдЕрдирд╛рдо рдкреНрд░рдХрд╛рд░ рдХреЗ рдЪрд░ рд╕рдВрдЧреНрд░рд╣ рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд┐рдП рдЬрд╛ рд╕рдХрддреЗ рд╣реИрдВред рдЕрдкрдиреЗ рд▓рд┐рдП рджреЗрдЦреЗрдВ:
using System;
using System.Linq;
class Program
{
static void Main()
{
var list = new [] {
new { Name = "Alex" , Age = 18 },
new { Name = "Petr" , Age = 30 } }.ToList();
Console .Write(list.Find(x => x.Name == "Petr" ));
Console .ReadKey();
}
}
рдЕрдирд╛рдо рдкреНрд░рдХрд╛рд░ рдХреЗ рд╡реЗрд░рд┐рдПрдмрд▓реНрд╕ рдХреЛ рджреВрд╕рд░реЗ рджрд╛рдпрд░реЗ рдореЗрдВ рдкрд╛рд╕ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ:
using System;
class Program
{
static dynamic User
{
get { return new { Name = "Alex" , Age = 18 }; }
}
static void Main()
{
Console .Write(User.Name);
Console .ReadKey();
}
}
рд░реЗрдл рдХрднреА-рдХрднреА рдЫреЛрдбрд╝рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ
C # 4.0 рдХреЗ рд╕рд╛рде рд╢реБрд░реВ, рд░реЗрдлрд░реА рдХреАрд╡рд░реНрдб рдХреЛ COM рдЗрдВрдЯрд░реЙрдк рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдХреЙрд▓ рдХрд░рддреЗ рд╕рдордп рдЫреЛрдбрд╝рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдирд╛рдорд┐рдд рддрд░реНрдХреЛрдВ рдХреЗ рд╕рдВрдпреЛрдЬрди рдореЗрдВ, рдпрд╣ рдмрд╣реБрдд рдкреНрд░рднрд╛рд╡рд╢рд╛рд▓реА рджрд┐рдЦрддрд╛ рд╣реИ:
using System;
using Word = Microsoft.Office.Interop.Word;
class Program
{
static void Main()
{
var app = new Word.Application();
Word.Document doc = null ;
// C# 2.0 - 3.5
object
filename = "test.doc" ,
visible = true ,
missing = Type.Missing;
doc = app.Documents.Open(
ref filename, ref missing, ref missing, ref missing, ref missing, ref missing,
ref missing, ref missing, ref missing, ref missing, ref missing, ref visible,
ref missing, ref missing, ref missing, ref missing);
// C# 4.0
doc = app.Documents.Open(FileName: "test.doc" , Visible: true );
}
}
рдиреЛрдЯ: рдирд╛рдорд┐рдд рдкреИрд░рд╛рдореАрдЯрд░ рдФрд░ рд░реЗрдлрд░реА рдХреЛ рдЫреЛрдбрд╝рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рднрд╛рд╖рд╛ рдЙрдкрдХрд░рдг рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП, .NET рдлреНрд░реЗрдорд╡рд░реНрдХ 4.0 рдФрд░ .NET рдлреНрд░реЗрдорд╡рд░реНрдХ 2.0, 3.0, 3.5 рджреЛрдиреЛрдВ рдХреЛ рдореВрд▓ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдврд╛рдВрдЪреЗ рдХреЗ рд░реВрдк рдореЗрдВ рдЪреБрдирд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
рдкрд░реНрджреЗ рдХреЗ рдкреАрдЫреЗ рдХреНрдпрд╛ рд░рд╣рддрд╛ рд╣реИ
рднрд╛рд╖рд╛ рдХреЗ рдЕрдиреНрдп рд╕рднреА "рд╕реВрдХреНрд╖реНрдорддрд╛рдУрдВ" рдХреЗ рдмреАрдЪ, рдореИрдВ рдСрдмреНрдЬреЗрдХреНрдЯреНрд╕ рдХреЗ рдирд┐рдпрддрд╛рддреНрдордХ рд╡рд┐рдирд╛рд╢ рдХреА рд╕рдорд╕реНрдпрд╛ рдХреЛ рдмрд╛рд╣рд░ рдХрд░ рджреВрдВрдЧрд╛, рдереНрд░реЗрдбрдПрдмреЛрд░реНрдЯрдПрдХреНрд╕ рдЕрдкрд╡рд╛рдж рдЬреИрд╕реЗ рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рдЕрдкрд╡рд╛рджреЛрдВ рдХреЛ рд╕рдВрднрд╛рд▓рдиреЗ рдХреА рдЬрдЯрд┐рд▓рддрд╛ред рдмреНрдпрд╛рдЬ рдХреЗ рд╢рдХреНрддрд┐рд╢рд╛рд▓реА рд╕реВрддреНрд░ рд╕рд┐рдВрдХреНрд░рдирд╛рдЗрдЬрд╝реЗрд╢рди рдЙрдкрдХрд░рдг рд╣реИрдВ рдФрд░ рднрд╛рд╖рд╛ рдореЗрдВ рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рд╕рдВрдЪрд╛рд▓рди рдХреЗ рд▓рд┐рдП рдПрдореНрдмреЗрдбрд┐рдВрдЧ рд╕рдорд░реНрдерди рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рд╕реА # 5.0 рдореЗрдВ рдЖрдЧрд╛рдореА рдкрд░рд┐рд╡рд░реНрддрди рд╣реИрдВред