Præsentation er lastning. Vent venligst

Præsentation er lastning. Vent venligst

C#: Data Typer. 2 Nordjyllands Erhvervakademi - 2009 Indhold: “.NET is designed around the CTS, or Common Type System. The CTS is what allows assemblies,

Lignende præsentationer


Præsentationer af emnet: "C#: Data Typer. 2 Nordjyllands Erhvervakademi - 2009 Indhold: “.NET is designed around the CTS, or Common Type System. The CTS is what allows assemblies,"— Præsentationens transcript:

1 C#: Data Typer

2 2 Nordjyllands Erhvervakademi - 2009 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 3 Nordjyllands Erhvervakademi - 2009 1. del The Common Type System…

4 4 Nordjyllands Erhvervakademi - 2009 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 5 Nordjyllands Erhvervakademi - 2009 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 6 Nordjyllands Erhvervakademi - 2009 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 7 Nordjyllands Erhvervakademi - 2009 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 8 Nordjyllands Erhvervakademi - 2009 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 9 Nordjyllands Erhvervakademi - 2009 Part 2 Value vs. reference typer…

10 10 Nordjyllands Erhvervakademi - 2009 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 11 Nordjyllands Erhvervakademi - 2009 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 12 Nordjyllands Erhvervakademi - 2009 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 13 Nordjyllands Erhvervakademi - 2009 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 14 Nordjyllands Erhvervakademi - 2009 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 15 Nordjyllands Erhvervakademi - 2009 Definering af “Lig med” Klasses 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 16 Nordjyllands Erhvervakademi - 2009 Part 3 Arrays…

17 17 Nordjyllands Erhvervakademi - 2009 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 18 Nordjyllands Erhvervakademi - 2009 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 19 Nordjyllands Erhvervakademi - 2009 Part 4 Namespaces…

20 20 Nordjyllands Erhvervakademi - 2009 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 21 Nordjyllands Erhvervakademi - 2009 Eksempel Framework Class Library (FCL) indeholder flere tusind klasser –hvordan er de organiserede? –hvordan undgås navnsammenfald? med FCL indenfor FCL

22 22 Nordjyllands Erhvervakademi - 2009 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 23 Nordjyllands Erhvervakademi - 2009 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. 2 Nordjyllands Erhvervakademi - 2009 Indhold: “.NET is designed around the CTS, or Common Type System. The CTS is what allows assemblies,"

Lignende præsentationer


Annoncer fra Google