Presentation laddar. Vänta.

Presentation laddar. Vänta.

Programmering i C# 10. Klassbiblioteket.

Liknande presentationer


En presentation över ämnet: "Programmering i C# 10. Klassbiblioteket."— Presentationens avskrift:

1 Programmering i C# 10. Klassbiblioteket

2 Klassbiblioteket 294 datatyper
Klasser, structer, interface Namnrymden System och 11 undernamnrymder Även indelat i profiler, som består av underbibliotek Minsta profil är Kernel, bestående av BCL och Runtime Infrastructure Programmering i C# - Kapitel 10

3 10.1 System 100 datatyper – de mest använda av alla slag
Basklassen Object ValueType och 21 härledda structer Exception och 37 härledda exceptionklasser 6 viktiga interface Programmering i C# - Kapitel 10

4 10.2 System.Collections Endast två centrala samlingsklasser
ArrayList är en dynamisk vektor Jämför Array som ges storlek då den skapas Namnet antyder logik både som vektor och som länkad lista: en endimensionell samling Amorterat konstant tidskomplexitet Elementtypen är Object Programmering i C# - Kapitel 10

5 Hashtable En hashtabell är en vektor av länkade listor, där elementen utgörs av objektpar Ena objektet – Key – avgör vilken lista objektet placeras i Dess GetHashCode anropas, returvärdet bestämmer index i vektorn Andra objektet – Value – utgör data Key kan vara en medlem i Value Programmering i C# - Kapitel 10

6 Hashtable forts. Hashtable tbl = new Hashtable(); MyClass obj = new MyClass(…); obj.ID = ”Anders”; tbl.Add(obj.ID, obj); // även: tbl[obj.ID] = obj; Key får inte ändras när objektet ligger i hashtabellen Sökning sker med indexoperatorn object found = tbl[”Anders”]; if (found != null && found is MyClass) … Programmering i C# - Kapitel 10

7 System.Collections.Specialized
ArrayList och Hashtable har elementtypen Object, vilket kräver åtskilliga typomvandlingar Specialiserade klassen NameValueCollection är dictionary av sträng/sträng-par Typparameterisering (som i C++) saknas Programmering i C# - Kapitel 10

8 10.3 System.IO Klasser för filhantering
Varianter för läs/skriv mot minne och sträng File och Directory med enbart statiska metoder för traversering m.m. Ej för läsning/skrivning FileStream för läsning/skrivning av byte StreamReader/StreamWriter för text Programmering i C# - Kapitel 10

9 FileStream Enumtyper för parametrar som styr mode, access och delning
FileStream fs = new FileStream( ”readme.txt”, FileMode.Create, FileAccess.ReadWrite, FileShare.None); Enumtyper för parametrar som styr mode, access och delning FileStream fs = new FileStream(”readme.txt”, FileMode.Open); byte[] vec = new byte[fs.Length]; fs.Read(vec, 0, (int)fs.Length); fs.Close(); Programmering i C# - Kapitel 10

10 StreamReader/StreamWriter
Paketerar Stream-objekt och tillför texthantering med konvertering Läsning/skrivning av string och char Konvertering default UTF8-fil mot Unicode Kan styras med System.Text.Encoding-objekt som parameter till Stream-konstruktorn Encoding beskrivs senare Programmering i C# - Kapitel 10

11 10.4 System.Net System.Net och System.Net.Sockets innehåller klasser för HTTP, samt TCP/UDP HttpWebRequest paketerar en HTTP-fråga, dess metod GetResponse returnerar en HttpWebResponse WebClient gör detsamma helt utan detaljer i metoden OpenRead Returnerar Stream mot ex. HTML-sida Programmering i C# - Kapitel 10

12 Sockets IPEndPoint är en IP-adress och ett portnummer
DNS-tjänst i statiska metoden Dns.Resolve IPAddress ipAddress = Dns.Resolve(”www.xyz.com”).AddressList[0]; IPEndPoint ipEndPoint = new IPEndPoint(ipAddress, 80); Programmering i C# - Kapitel 10

13 Sockets forts. Klassen Socket i System.Net.Sockets
Data skickas med metoden Send och läses med Receive UDP-socket utan förbindelse, TCP-socket upprättar server/clientroll Viktigt att stänga socket med Dispose ..eller Close Programmering i C# - Kapitel 10

14 Sockets exempel // TCP server Socket listener =
new Socket(AddressFamily.InterNetwork, SocketType.Stream. ProtocolType.Tcp); listener.Bind(ep); // ep är en IPEndPoint listener.Listen(1); Socket handler = listener.Accept(); // väntar… // TCP client Socket s = … // som i serverexemplet s.Connect(ep); // ep är en IPEndPoint if (s.Connected) … // OBS se komplett exempel i boken! Programmering i C# - Kapitel 10

15 Konvertering av data Sockets skickar/tar emot bytevektor
Applikationsprotokoll ofta textbaserade Text i CLI är Unicode – 16 bit Konvertera med klassen System.Text.Encoding Encoding.ASCII.GetString(myBytes); Encoding.ASCII.GetBytes(myString); Programmering i C# - Kapitel 10

16 10.5 System.Threading En tråd är ett spår av exekvering
Motsvarigheten till en process är i VES en AppDomain Kan vara egen process eller tråd i operativet Trådar i samma AppDomain har samma adressrymd men egna stackar Tråd hanteras med klassen Thread Synkronisering med hjälp av Monitor Programmering i C# - Kapitel 10

17 Thread Tråd startas genom att man via Thread-objekt anropar metoden Start Parameter är en delegerare av typ ThreadStart ThreadStart-objektet associeras till metod som ska exekveras i ny tråd ThreadStart är void och utan parametrar Programmering i C# - Kapitel 10

18 Starta sekundärtråd class X { void MethodRunningInNewThread() { … }
public void Method() Thread t = new Thread( new ThreadStart( this.MethodRunningInNewThread)); t.Start(); // anrop i ny tråd // befintliga tråden fortsätter } Programmering i C# - Kapitel 10

19 Synkronisering Då flera trådar accessar samma objekt krävs låsning
Blockerande metod sätter trådar i kö Klassen Monitor har statiska metoderna Enter och Exit Parameter är det objekt som ska accessas Object har odokumenterat fält för låsning! Programmering i C# - Kapitel 10

20 Synkronisering exempel
set // setgren i en egenskap { Monitor.Enter(this); a = value; Monitor.Exit(this); } C# har ordet lock för samma ändamål set // setgren i en egenskap { lock (this) { a = value; } } Programmering i C# - Kapitel 10

21 Asynkron programmering
Designmönster i vissa klasser Tidsödande metod Xxx paketeras i BeginXxx som startar ny tråd EndXxx returnerar samma värde som Xxx Är blockerande tills Xxx exekverat BeginXxx returnerar en IAsyncResult som kan användas för övervakning av tråden Programmering i C# - Kapitel 10

22 Asynkron programmering forts.
IAsyncResult har bl.a.: IsCompleted – bool som är true då tråden exekverat AsyncWaitHandle – WaitHandle med flera möjligheter att blockeras viss tid etc. Kan alltså pollas från primärtråden Programmering i C# - Kapitel 10

23 Asynkron programmering forts.
BeginXxx kan också ha parameter av typ AsyncCallback Delegerare som anropas då tråden exekverat Callbackmetoden bör då typiskt anropa EndXxx för att hantera returvärdet Därmed sköts hela proceduren i bakgrund i sekundärtråd! Programmering i C# - Kapitel 10

24 10.6 System.Text Två centrala klasser: StringBuilder och Encoding
StringBuilder är en traditionell strängklass Inkapslar teckenvektor som kan manipuleras Jämför String som är immutable Programmering i C# - Kapitel 10

25 Encoding Encoding-objekt finns i Stream-objekt och har nämnts i samband med sockets Alltid härledda – Encoding är abstrakt Konverterar teckenuppsättning till/från Unicode Metoderna GetBytes och GetString Statiska egenskaper ger typiska objekt För ASCII, ANSII (heter Default!), UTF8 Programmering i C# - Kapitel 10

26 10.7 System.Xml XmlTextReader och XmlTextWriter förenklar läsning/skrivning av XML-filer Framförallt XmlTextReader döljer detaljerna i XML-parsingen XmlTextReader reader = new XmlTextReader(”products.xml”); while (reader.Read()) if (reader.NodeType == XmlNodeType.Text) Console.WriteLine(reader.Value); Programmering i C# - Kapitel 10

27 10.8 System.Globalization Vissa klasser implementerar IFormattable
Ger en överlagrad ToString Två extra parametrar som styr formatering En String enligt särskilda regler En IFormatProvider DateTimeFormatInfo används i DateTime NumberFormatInfo används i alla hel- och flyttal Programmering i C# - Kapitel 10

28 10.9 System.Diagnostics En enda attributklass: ConditionalAttribute
Kan anges för metod och styr huruvida metoden kompileras samt huruvida den anropas Programmering i C# - Kapitel 10

29 10.10 System.Reflection Reflection är när information om datatyper används vid exekvering Informationen finns i assemblyts manifest Central klass är Type I namespace System Metoder i Type returnerar detaljerad information i MethodInfo, EventInfo, FieldInfo m.fl. Programmering i C# - Kapitel 10

30 System.Reflection forts.
Klassen Assembly ger möjlighet analysera ett assembly GetTypes ger en vektor av Type Klassen Module ger motsvarande för en modul (fil med del av assembly) Type.CreateInstance skapar objekt av klassen, med defaultkonstruktorn Programmering i C# - Kapitel 10

31 10.11 System.Runtime System.Runtime.CompilerServices endast för utveckling av CLI-kompilatorer System.Runtime.InteropServices har klasser för anrop till funktioner i icke-CLI-kod Traditionella DLL-filer Attributklassen DllImportAttribute är central Programmering i C# - Kapitel 10

32 DllImportAttribute [DllImport(”user32.dll”)] public static extern int MessageBoxA( int hWnd, string msg, string cap, int type); Parametrar översätts automatiskt till den typ de har i DLL-filens funktion Ofta C-type Parametrar till DllImportAttribute-konstruktorn styr beteendet Programmering i C# - Kapitel 10

33 10.12 System.Security Klasser som gör det möjligt att undersöka begränsningar i rättigheter Central basklass är CodeAccessPermission Metoden Demand testar en uppsättning rättigheter och genererar SecurityException Attributklasser kan testa helt assemblys krav på rättigheter direkt vid laddning Programmering i C# - Kapitel 10


Ladda ner ppt "Programmering i C# 10. Klassbiblioteket."

Liknande presentationer


Google-annonser