Presentation laddar. Vänta.

Presentation laddar. Vänta.

Programmering i C# 10. Klassbiblioteket. Programmering i C# - Kapitel 10 2 Klassbiblioteket 294 datatyper Klasser, structer, interface Namnrymden System.

Liknande presentationer


En presentation över ämnet: "Programmering i C# 10. Klassbiblioteket. Programmering i C# - Kapitel 10 2 Klassbiblioteket 294 datatyper Klasser, structer, interface Namnrymden System."— Presentationens avskrift:

1 Programmering i C# 10. Klassbiblioteket

2 Programmering i C# - Kapitel 10 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

3 Programmering i C# - Kapitel 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

4 Programmering i C# - Kapitel 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

5 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

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

7 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

8 Programmering i C# - Kapitel 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

9 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); FileStream fs = new FileStream(”readme.txt”, FileMode.Open); byte[] vec = new byte[fs.Length]; fs.Read(vec, 0, (int)fs.Length); fs.Close();

10 Programmering i C# - Kapitel 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

11 Programmering i C# - Kapitel 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

12 Programmering i C# - Kapitel 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];www.xyz.com”).AddressList[0 IPEndPoint ipEndPoint = new IPEndPoint(ipAddress, 80);

13 Programmering i C# - Kapitel 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

14 Programmering i C# - Kapitel 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!

15 Programmering i C# - Kapitel 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);

16 Programmering i C# - Kapitel 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

17 Programmering i C# - Kapitel 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

18 Programmering i C# - Kapitel 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 }

19 Programmering i C# - Kapitel 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!

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

21 Programmering i C# - Kapitel 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

22 Programmering i C# - Kapitel 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

23 Programmering i C# - Kapitel 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!

24 Programmering i C# - Kapitel 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

25 Programmering i C# - Kapitel 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

26 Programmering i C# - Kapitel 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);

27 Programmering i C# - Kapitel 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

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

29 Programmering i C# - Kapitel 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.

30 Programmering i C# - Kapitel 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

31 Programmering i C# - Kapitel 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

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

33 Programmering i C# - Kapitel 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


Ladda ner ppt "Programmering i C# 10. Klassbiblioteket. Programmering i C# - Kapitel 10 2 Klassbiblioteket 294 datatyper Klasser, structer, interface Namnrymden System."

Liknande presentationer


Google-annonser