Dziś dla odmiany postanowiłem zacząć porządnie zgłębiać wiedzę na temat LINQ - wszak to kluczowy element .NET 3.5. Poczytałem trochę i pobawiłem się w Visual Studio. W oglądanych wcześniej przeze mnie przykładach / prezentacjach (z wyjątkiem jednej) zasadniczo brakowało mi głębszego wyjaśnienia dlaczego składnia zapytań taka a nie inna. Trzeba to powiedzieć, że po dokładnym zapoznaniu się z wprowadzonymi "cukierkami składniowymi" C# 3.0 i ich przetwarzaniem przez kompilator od razu lepiej mi się patrzy na te zapytania (w VB 9.0 jest podobnie, choć są pewne różnice, niektórych rzeczy więcej a innych mniej w stosunku do C#). W sumie nie ma w tym wszystkim magii... Jakie to sztuczki? Oto one - w skrócie:
1. Wnioskowanie typów lokalnych zmiennych (local type inference) - nie tracimy tutaj silnego typowania, kompilator na podstawie wyrażenia inicjującego, wstawia odpowiedni typ dla zmiennej lokalnej. Dla klasy Address z propercjami City i Street wygląda to tak:
var a = new Address();
a.City = "Cracow";
a.Street = "Nowa";
2. Wyrażenia lambda - upraszczają składnię metod anonimowych wprowadzonych z C# 2.0, gdzie można było definiować delegację w stylu:
delegate( int a, int b ) { return a + b; }
Teraz możemy uprocić to do postaci:
(int a, int b ) => { return a + b; } czy też
(a, b) => a + b
3. Metody rozszerzające (Extension Methods) - są odpowiedzią na zagadkę: "W jaki sposób dodać nowe publiczne metody do istniejącej już klasy bez dziedziczenia i rekompilacji?" W zasadzie jest to przekombinowana sztuczka składniowa, bo nie jest to cud -:). W klasie statycznej definiujemy publiczną statyczną metodę, której pierwszy argument jest typu, który chcemy rozszerzyć. Stawiamy przed nim słowo this:
public static class MyExtensions
{
public static bool IsElDupa(this string s)
{
return s != "ElDupa";
}
}
Po takiej definicji zamiast pisać:
string str = "test";
bool b = MyExtensions.IsElDupa(str);
możemy zapisać to tak:
string str = "test";
bool b = str.IsElDupa();
Przy czym w tak zdefiniowanej metodzie możemy odwoływać się tylko do publicznych składowych klasy.
ciąg dalszy nastąpi ...
New features in Silverlight 4 Beta: Implicit Styles & CompositeTransform
-
In this post I’ll show two useful features: implicit styles and new
transform - *CompositeTransform*.
*Implicit Styles*
[image: implicit_styles_vB]
Use...
14 lat temu
Brak komentarzy:
Prześlij komentarz