1 / 23

C#: Data Typer

C#: Data Typer. Indhold:.

isha
Download Presentation

C#: Data Typer

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation 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. 1. del The Common Type System…

  4. The Common Type System (CTS) • CTS erbaseretpå et hierarkiafklasserdefinereti FCL • alletyperarverfra 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:

  7. Eksempel • Et eksempelpåbrugaftyperi C# • Variable skalerklæres (compiler) • Variable skalinitialiseres (compiler) public class App { public static void Main() { int width, height; width = 2; height = 4; int area = width * height; intx; int y = x * 2; ... } } Erklæring Erklæring + initialiering Fejl, x er ikke init.

  8. Type konversion • Implicit type konversion: • framindretilstørre type • Ellerserderbrug for typecasteller explicit konversion… • typecast syntaksenertypeniparentes • KonversionbaseretpåSystem.Convertklassen inti = 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. Part 2 Value vs. reference typer…

  10. "calico" 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";

  11. Hvordan ved du hvad der er hvad? • Lærdetudenad! • Men ellerserdetikkesåsvært: • primitive typersombool, int og double er values • restener reference typer int i; string s; Customer c1, c2; i = 23; s = "a message"; c1 = null; c2 = new Customer(…);

  12. Boxing og Unboxing • C# konvertererværdi <==> objekt, nårdererbehov • værdi ==> objektkaldes "boxing" • objekt ==> værdikaldes "unboxing" inti, 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. Anvendelseaf 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. Part 3 Arrays…

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

  18. Multi-dimensionelle arrays • C# understøtter arrays som et enkeltobjekt ELLER som array af arrays • nedenstående implementer et 2D array med forskelliglæ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. Part 4 Namespaces…

  20. Namespaces • Namespaces erberegnettil at organisereklasses • et namespace N er et set afklasseri N’s scope • namespaces erofteindlejrede 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…

  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

More Related