Præsentation er lastning. Vent venligst

Præsentation er lastning. Vent venligst

C#: Data Typer. Indhold: “.NET is designed around the CTS, or Common Type System. The CTS is what allows assemblies, written in different languages, to.

Lignende præsentationer


Præsentationer af emnet: "C#: Data Typer. Indhold: “.NET is designed around the CTS, or Common Type System. The CTS is what allows assemblies, written in different languages, to."— Præsentationens transcript:

1 C#: Data Typer

2 Indhold: “.NET is designed around the CTS, or Common Type System. The CTS is what allows assemblies, written in different languages, to work together. To ensure interoperability across languages, Microsoft has also defined the CLS, or Common Language Specification, a subset of the CTS that all languages support. Otherwise, the types in C# are what you would expect from a modern OOPL…” The Common Type System Value vs. reference typer Arrays Namespaces

3 The Common Type System… 1. del

4 The Common Type System (CTS) CTS er baseret på et hierarki af klasser defineret i FCL alle typer arver fra Object (undtagen interface typer)

5 The Common Language Specification (CLS) Ikke alle sprog understøtter alle CTS typer og egenskaber C# understøtter unsigned integer, VB.NET gør ikke C# er case sensitiv, VB.NET er ikke C# understøtter pointere (i unsafe mode), VB.NET gør ikke C# understøtter operator overloading, VB.NET gør ikke CLS var ment til at fremme forbindelsen mellem kode skrevet i forskellige sprog Den overvejende del af klasserne i FCL er i overensstemmelse med CLS

6 Mapping C# til CTS Language keywords map to common CTS classes: KeywordDescriptionSpecial format for literals bool Boolean true false char 16 bit Unicode character 'A' '\x0041' '\u0041' sbyte 8 bit signed integernone byte 8 bit unsigned integernone short 16 bit signed integernone ushort 16 bit unsigned integernone int 32 bit signed integernone uint 32 bit unsigned integer U suffix long 64 bit signed integer L or l suffix ulong 64 bit unsigned integer U/u and L/l suffix float 32 bit floating point F or f suffix double 64 bit floating pointno suffix decimal 128 bit high precision M or m suffix string character sequence "hello", @"C:\dir\file.txt"

7 Eksempel Et eksempel på brug af typer i C# Variable skal erklæres (compiler) Variable skal initialiseres (compiler) public class App { public static void Main() { int width, height; width = 2; height = 4; int area = width * height; int x; int y = x * 2;... } Erklæring Erklæring + initialiering Fejl, x er ikke init.

8 Type konversion Implicit type konversion: fra mindre til større type Ellers er der brug for typecast eller explicit konversion… typecast syntaksen er typen i parentes Konversion baseret på System.Convert klassen int i = 5; double d = 3.2; string s = "496"; d = i; i = (int) d; i = System.Convert.ToInt32(s); implicit konversion typecast nødvendig Konversion nødvendig

9 Value vs. reference typer… Part 2

10 Value vs. reference typer I C# er 2 kategorier af data typer Value typer: variablen repræsenterer en værdi ("bits") Reference typer: variablen repræsenterer en reference til et objekt aktuelle data er indeholdt i objektet int i; i = 10; 10 string s; s = "calico"; "calico"

11 Hvordan ved du hvad der er hvad? Lær det udenad! Men ellers er det ikke så svært: primitive typer som bool, int og double er values resten er reference typer int i; string s; Customer c1, c2; i = 23; s = "a message"; c1 = null; c2 = new Customer(…);

12 Boxing og Unboxing C# konverterer værdi objekt, når der er behov værdi ==> objekt kaldes "boxing" objekt ==> værdi kaldes "unboxing" int i, j; object obj; string s; i = 32; obj = i; // boxed copy! i = 19; j = (int) obj; // unboxed! s = j.ToString(); // boxed! s = 99.ToString(); // boxed!

13 Brugerdefinerede reference typer (Abstrakte datatyper) Klasser! for eksempel en kundeklasse… public class Customer { public string name; // fields public int id; public Customer(string name, int id) // constructor { this.name = name; this.id = id; } public override string ToString() // method { return "Customer: " + this.name; } }

14 Anvendelse af reference typer (klasser) Oprettelse, tildeling, og sammenligning: Customer c1, c2, c3; string s1, s2; c1 = new Customer("joe hummel", 36259); c2 = new Customer("marybeth lore", 55298); c3 = null; // c3 references no object c3 = c1; // c3 now references same obj as c1 if (c1 == null)... // do I ref an object? if (c1 == c2)... // compares references if (c1.Equals(c2))... // compares objects if (s1 == s2)... // exception: == overloaded to // compare string data

15 Definering af “Lig med” Klasser bør omdefinere Equals public class Customer {. public override bool Equals(object obj) { Customer other; if ((obj == null) || (!(obj is Customer))) return false; // definitely not equal other = (Customer) obj; // typecast to access return this.id == other.id; // equal if same id... }

16 Arrays… Part 3

17 Arrays Arrays er reference typer baseret på Array klassen i FCL oprettes med new 0-baseret indeksering Tildelt default værdier (0 for numerisk, null for references, etc.) int[] a; a = new int[5]; a[0] = 17; a[1] = 32; int x = a[0] + a[1] + a[4]; int l = a.Length; Tilgå element Opret Antal elementer

18 Multi-dimensionelle arrays C# understøtter arrays som et enkelt objekt ELLER som array af arrays nedenstående implementer et 2D array med forskellig længde (Jagged) Customer[,] twoD; int[][] jagged2D; // 2D array as single object twoD = new Customer[10, 100]; twoD[0, 0] = new Customer(…); twoD[9, 99] = new Customer(…); // 2D array as array of arrays jagged2D = new int[10][]; jagged2D[0] = new int[10]; jagged2D[1] = new int[20]; jagged2D[9] = new int[100]; jagged2D[0][0] = 1; jagged2D[9][99] = 100; Samme længde Forskellig længde

19 Namespaces… Part 4

20 Namespaces Namespaces er beregnet til at organisere klasses et namespace N er et set af klasser i N’s scope namespaces er ofte indlejrede namespace Workshop { public class Customer {. } public class Product {. } }//namespace Workshop.Customer

21 Eksempel Framework Class Library (FCL) indeholder flere tusind klasser hvordan er de organiserede? hvordan undgås navnsammenfald? med FCL indenfor FCL

22 FCL namespaces FCL øverste namespace er "System" FCL teknologier er indlejret i System… NamespacePurposeAssembly SystemCore classes, typesmscorlib.dll System.CollectionsData structuresmscorlib.dll System.DataDatabase accessSystem.Data.dll System.Windows.FormsGUISystem.Windows.Forms.dll System.XMLXML processingSystem.Xml.dll

23 Opsummering CTS er det fælles type system samme type system for alle sprog typerne er implementeret med klasser i FCL Simple datatyper er call by value, klasser er call by reference CLS er den fælles sprog specifikation typer som med sikkerhed fungerer på tværs af sprog Pas på med at sammenblande namespaces med assemblies… namespaces hjælper med organisation assemblies refererer til implementation / packaging


Download ppt "C#: Data Typer. Indhold: “.NET is designed around the CTS, or Common Type System. The CTS is what allows assemblies, written in different languages, to."

Lignende præsentationer


Annoncer fra Google