C data typer
This presentation is the property of its rightful owner.
Sponsored Links
1 / 24

C#: Data Typer PowerPoint PPT Presentation


  • 41 Views
  • Uploaded on
  • Presentation posted in: General

C#: Data Typer. Indhold:.

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.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -

Presentation Transcript


C data typer

C#: Data Typer


Indhold

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


1 del

1. del

  • The Common Type System…


The common type system cts

The Common Type System (CTS)

  • CTS er baseret på et hierarki af klasser defineret i FCL

    • alle typer arver fra Object (undtagen interface typer)


The common language specification cls

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


Mapping c til cts

Mapping C# til CTS

  • Language keywords map to common CTS classes:


Eksempel

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.


Type konversion

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


Part 2

Part 2

  • Value vs. reference typer…


Value vs reference typer

"calico"

Value vs. reference typer

  • C# separates data types into two categories

  • 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";


Hvordan ved du hvad der er hvad

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(…);


Boxing og unboxing

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!


Brugerdefinerede reference typer abstrakte datatyper

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; }

}


Anvendelse af reference typer klasser

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


Definering af lig med

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...

}


Part 3

Part 3

  • Arrays…


Arrays

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;

Opret

Tilgå element

Antal elementer


Multi dimensionelle arrays

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


Part 4

Part 4

  • Namespaces…


Namespaces

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


Eksempel1

Eksempel

  • Framework Class Library (FCL) indeholder flere tusind klasser

    • hvordan er de organiserede?

    • hvordan undgås navnsammenfald?

      • med FCL

      • indenfor FCL


Fcl namespaces

FCL namespaces

  • FCL øverste namespace er "System"

  • FCL teknologier er indlejret i System…


Opsummering

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


Referencer

Referencer

  • Bøger:

    • T. Archer and A. Whitechapel, "Inside C#" (2nd edition)

    • S. Lippman, "C# Primer"

    • J. Mayo, "C# Unleashed"


  • Login