Visual Studio Codename - PowerPoint PPT Presentation

About This Presentation
Title:

Visual Studio Codename

Description:

Title: PowerPoint Presentation Last modified by: Nowak Created Date: 1/1/1601 12:00:00 AM Document presentation format: Pokaz na ekranie Other titles – PowerPoint PPT presentation

Number of Views:64
Avg rating:3.0/5.0
Slides: 29
Provided by: mimuwEdu9
Category:

less

Transcript and Presenter's Notes

Title: Visual Studio Codename


1
Visual Studio Codename Orcas, LINQ
  • Janusz Nowak

2
Plan prezentacji
  • Nowe rodzaje projektów i zmiany w VS
  • C 3.0
  • LINQ ( ang. Language INtegrated Query pol.
    Zintegrowany jezyk zapytan)
  • Co my mamy z tego?
  • Zródla

3
Nowe rodzaje projektów i zmiany w VS
  • Test Project
  • Outlook Add-in
  • Mozliwosc pisania rozszerzen do pakietu Office
  • Analizator kodu
  • Sledzenie zmiennych
  • Stos wywolan

4
C 3.0
  • Wnioskowanie typu zmiennych lokalnych
  • Metody rozszerzajace
  • Lambda wyrazenia
  • Inicjatory obiektów i kolekcji
  • Typy anonimowe
  • Tablice z wnioskowanym typem
  • Wyrazenia z zapytaniami
  • Drzewa wyrazen

5
C Wnioskowanie typu zmiennych lokalnych
  • var i 5var s "Hello"var d 1.0var
    numbers new int 1, 2, 3var orders new
    Dictionaryltint,Ordergt()
  • Oznacza to samo co int i
    5string s "Hello"double d 1.0int
    numbers new int 1, 2, 3Dictionaryltint,Orde
    rgt orders new Dictionaryltint,Ordergt()

6
C Wnioskowanie typu zmiennych lokalnych
  • Deklaracja musi zawierac inicjator
  • W czasie kompilacji typ wyrazenia
    inicjalizujacego !null
  • Inicjator nie moze byc obiektem ani kolekcja, ale
    moze byc wyrazeniem, które zawiera inicjalizacje
    obiektu lub kolekcji
  • Jesli deklaracja sklada sie z wielu deklaracji to
    inicjatory musza miec ten sam typ w czasie
    kompilacji.
  • Bledne przyklady var x //brak
    inicjacji var y 1, 2, 3
    //inicjalizacja przez kolekcjevar z
    null //typ null nie dozwolony

7
C Metody rozszerzajace
  • Pozwalaja na rozszerzenie istniejacych typów o
    nowe metody
  • Metody rozszerzajace sa deklarowane przez slowo
    this w pierwszym parametrze metody (this string
    s)
  • Metody rozszerzajace mozemy deklarowac tylko w
    statycznych klasach
  • Importujemy metody rozszerzajace przez using
    nazwa_namespace (using Acme.Utilities)
  • Mozemy wolac nowe metod uzywajac skladni
    instancyjnych metod

8
C Metody rozszerzajace
  • namespace Acme.Utilities
  • public static class Extensions public
    static int ToInt32(this string s)
    return Int32.Parse(s)
  • Uzycie metod rozszerzajacych
  • using Acme.Utilities
  • string s "1234"int i s.ToInt32()// To samo
    co Extensions.ToInt32(s)

9
C Lambda wyrazenia
  • Lambda wyrazenia jest to nowy sposób pisania
    anonimowych metod z wnioskowaniem typów oraz
    mozliwoscia przeksztalcenia do typów delegowanych
    i drzewa wyrazen.
  • Przyklad listOfFoo.Where(delegate(Fo
    o x) return x.sizegt10)
  • mozemy zapisac
  • listOfFoo.Where(x gt x.sizegt10)

10
C Lambda wyrazenia
  • Przyklady
  • x gt x 1 // domniemany typ, tresc bedaca
    wyrazeniem
  • x gt return x 1 // typ wywnioskowany,
    deklaracja
  • (int x) gt x 1 // jawny typ, tresc
    bedaca wyrazeniem
  • (int x) gt return x 1 // jawny typ,
    deklaracja
  • (x, y) gt x y // kilka parametrów
  • () gt Console.WriteLine() // bez parametrów

11
C Lambda wyrazenia
  • Co daja nam lambda wyrazenia
  • Anonimowe metody wymagaja podania typu, lambda
    wyrazenia nie.
  • Wyrazenie lambda moze byc deklaracja lub
    wyrazeniem zas metoda anonimowa tylko deklaracja
  • Wyrazenie lambda moze zostac uznane za drzewo
    wyrazenia.

12
C Inicjatory obiektów i kolekcji
  • Pozwalaja nam na latwe konstruowanie i
    inicjalizowanie obiektów.
  • Oszczednosc kodu.

13
C Inicjatory obiektów
  • public class Punkt int x, y
  • public int X get return x set x
    value public int Y get return y set
    y value
  • Mozemy stworzyc obiekt tej klasy w ten sposób
  • var a new Punkt X 0, Y 1
  • co ma taki sam efekt co
  • var a new Punkt() a.X 0
    a.Y 1

14
C Inicjatory
  • public class Prostokat// skladajaca sie z
    2punktów
  • Punkt p1, p2
  • public Punkt P1 get return p1 set p1
    value public Punkt P2 get return p2
    set p2 value
  • Obiekt tej klasy mozemy stworzyc przez
  • var r new Prostokat P1 new Punkt X
    0, Y 1 , P2 new Punkt X 2, Y 3
  • co ma ten sam efekt co
  • var r new Prostokat() var __p1 new
    Punkt() __p1.X 0 __p1.Y 1
  • r.P1 __p1 var __p2 new
    Punkt() __p2.X 2 __p2.Y 3
    r.P2 __p2
  • Zmienne __p1 i __p2 sa tymczasowe, niedostepne i
    niewidoczne

15
C Inicjatory obiektów
  • Natomiast gdy konstruktor Prostokata tworzy dwa
    obiekty Punkt
  • public class Prostokat Punkt p1 new
    Punkt() Punkt p2 new Punkt() public
    Punkt P1 get return p1
    public Punkt P2 get return p2
  • Obiekt tej klasy mozemy stworzyc przez
  • var r new Prostokat P1 X 0, Y
    1 , P2 X 2, Y 3
  • lub
  • var r new Prostokat() r.P1.X 0
    r.P1.Y 1 r.P2.X 2 r.P2.Y 3

16
C Inicjatory kolekcji
  • public class Kontakt
  • string name
  • Listltstringgt pNumbers new Listltstringgt()
  • public string Name get return name set
    name value
  • public Listltstringgt PNumbers get return
    pNumbers
  • ListltKontaktgt mozemy stworzyc i zainicjowac w
    ponizszy sposób
  • var contacts new ListltKontaktgt new Contact
    Name "Chris Smith", PNumbers
    "206-555-0101", "425-882-8080" , new Contact
    Name "Bob Harris", PNumbers
    "650-555-0199"

17
C Inicjatory kolekcji
  • Ma to ten sam efekt co var contacts new
    ListltKontaktgt() var __c1 new
    Contact() __c1.Name "Chris
    Smith" __c1.PNumbers.Add("206-555-0101") __c
    1.PNumbers.Add("425-882-8080")
    contacts.Add(__c1) var __c2 new
    Contact() __c2.Name "Bob Harris" __c2.PNum
    bers.Add("650-555-0199") contacts.Add(__c2)

18
C Typy anonimowe
  • Inicjalizator ! null.
  • Nazwa anonimowego typu jest automatycznie
    generowana przez kompilator w czasie kompilacji i
    nie mozemy sie do niej odwolywac w programie.
  • Jesli w programie podamy dwa inicjatory
    anonimowego obiektu, które maja takie same nazwy
    parametrów tego samego typu w tej samej
    kolejnosci, to beda to instancje tego samego
    typu.
  • Przyklad
  • var p1 new Name "Lawnmower", Price
    495.00 var p2 new Name "Shovel", Price
    26.95 p1 p2 //OK poniewaz ten sam
    anonimowy typ

19
C Tablice z wnioskowanym typem
  • Domniemany typ tablic, sposób tworzenia i
    inicjalizacji tablic, których typ jest
    wnioskowany po elementach inicjalizujacych.
  • Inicjator musi zawierac jeden typ, dla którego
    wszystkie elementy z zbioru dadza sie
    przekonwertowac i nie jest to null.
  • Przyklady
  • var a new 1, 10, 100, 1000 // int
    var b new 1, 1.5, 2, 2.5 //
    double var c new "hello", null, "world
    // string
  • var d new 1, "one", 2, "two" //
    Error

20
C Tablice z wnioskowanym typem
  • Wnioskowanie typu tablic mozemy polaczyc z
    anonimowo inicjacja obiektów, zeby stworzyc
    anonimowo strukture danych. np..
  • var contacts new new Name "Chris
    Smith", PhoneNumbers new "206-555-0101",
    "425-882-8080" , new Name "Bob
    Harris", PhoneNumbers new "650-555-0199"

21
C Wyrazenia z zapytaniami
  • Mozliwosc uzycia zapytan w stylu SQL lub XQuery
    dla kolekcji, tablic w C.
  • Przyklady zapytan

22
C Wyrazenia z zapytaniami
  • Where from c in
    customerswhere c.City "London"select c
  • Bedzie przetlumaczone na
  • customers.Where(c gt c.City "London")
  • Select from c in customerswhere
    c.City "London"select c.Name
  • Group
  • from c in customersgroup c.Name by c.Country

23
C Wyrazenia z zapytaniami
  • Orderby from c in
    customersorderby c.Nameselect new c.Name,
    c.Phone //anonimowy typ
  • Zlozone zapytania
  • from c in customerswhere c.City
    "London"from o in c.Orderswhere
    o.OrderDate.Year 2005select new c.Name,
    o.OrderID, o.Total

24
C Drzewa wyrazen
  • Drzewa wyrazen pozwalaja na to, zeby wyrazenia
    lambda byly reprezentowane jako dane zamiast
    kodu (delegat).
  • Funcltint,intgt f x gt x 1 // Code
  • ExpressionltFuncltint,intgtgt e x gt x 1// Data
  • delegat f odwoluje sie do metody, która wylicza x
    1, a drzewo wyrazenia opisuje wyrazenie
  • x 1.

25
LINQ
  • LINQ dla C, VB oraz innych jezyków w przyszlosci
    F
  • Odmiany
  • Linq - Obiekty film
  • DLinq - Bazy danych film
  • XLinq Xml film

26
Co my mamy z tego?
  • Latwiejsze polaczenie dwóch swiatów baz danych i
    obiektów.
  • Moc XPath i XQuery dla XML w C 3.0 .
  • Nowe mozliwosci operowania na obiektach.
  • Testowanie.

27
Zródla
  • http//msdn.microsoft.com/data/ref/linq/
  • http//channel9.msdn.com/showpost.aspx?postid1146
    80

28
KONIEC
Write a Comment
User Comments (0)
About PowerShow.com