Difference between revisions of "6237 Programmering II (Csharp) Agenda/TypeCasting"

From Teknologisk videncenter
Jump to: navigation, search
(Created page with "==TypeCasting== Typecasting kan anvendes på klasser der nedarver fra hinanden. Alle objekter arver fra klassen Object. I eksemplet herunder lavet variablen s af typen String. ...")
 
(TypeCasting)
 
Line 1: Line 1:
 
==TypeCasting==
 
==TypeCasting==
Typecasting kan anvendes på klasser der nedarver fra hinanden.  
+
Typecasting kan anvendes på klasser der nedarver fra hinanden. Alle objekter arver fra klassen Object.  
Alle objekter arver fra klassen Object.  
+
 
I eksemplet herunder lavet variablen s af typen String. Derefter laves Objektet o som sættes lig med s.Dette er muligt fordi string nedarver fra object.
+
I eksemplet herunder laves variablen s af typen String. Derefter laves Objektet o som sættes lig med s.Dette er muligt fordi string nedarver fra object.
 
Hvis du nu alligevel vil have længden af strengen kan du benytte typecasting som vist herunder.
 
Hvis du nu alligevel vil have længden af strengen kan du benytte typecasting som vist herunder.
  
Line 17: Line 17:
 
</source>
 
</source>
  
Her er et eksemple på en mere praktisk anvendelse af typecasting.  
+
Her er et eksemple på en mere praktisk anvendelse af typecasting.
 +
 
Vi har klasserne Elev og Laerer der begge ´nedarver fra Person. Forskellen er at en Elev går på et hold medens læreren får løn.           
 
Vi har klasserne Elev og Laerer der begge ´nedarver fra Person. Forskellen er at en Elev går på et hold medens læreren får løn.           
 +
 
Da begge nedarver fra Person kan vi gemme både Elev og Laerer i pLst som er en List af typen Person.  
 
Da begge nedarver fra Person kan vi gemme både Elev og Laerer i pLst som er en List af typen Person.  
  

Latest revision as of 15:57, 7 October 2015

TypeCasting

Typecasting kan anvendes på klasser der nedarver fra hinanden. Alle objekter arver fra klassen Object.

I eksemplet herunder laves variablen s af typen String. Derefter laves Objektet o som sættes lig med s.Dette er muligt fordi string nedarver fra object. Hvis du nu alligevel vil have længden af strengen kan du benytte typecasting som vist herunder.

String s = "Text";
Object o = s;
int a = ((String)o).Length;

På samme måde kan objektet o gives værdien 3.4 som egentlig er en double. Et objekt kan ikke ganges med 2, men det kan det hvis vi typecaster det til double.

Object o = 3.4;
double b = ((double)o) * 2;

Her er et eksemple på en mere praktisk anvendelse af typecasting.

Vi har klasserne Elev og Laerer der begge ´nedarver fra Person. Forskellen er at en Elev går på et hold medens læreren får løn.

Da begge nedarver fra Person kan vi gemme både Elev og Laerer i pLst som er en List af typen Person.

I det efterfølgende Loop spørger vi med p.GetType() hvilken type p er, og udskriver med typecasting enten det hold eleven går på, eller den løn læreren får.


List<Person> pLst = new List<Person>();
pLst.Add(new Person("Tommy", "tommys@mail.dk"));
pLst.Add(new Elev("Jens", "jens@mail.dk", "Hold1"));
pLst.Add(new Elev("Kurt", "kurt2mail.dk", "Hold1"));
pLst.Add(new Laerer("Peter", "peter@mail.dk", 30000));

foreach(Person p in pLst)
{
  if (p.GetType() == typeof(Elev))
  {
    System.Console.WriteLine("Eleven {0} går på hold {1}", p.Navn, ((Elev)p).Hold);
  }

  if (p.GetType() == typeof(Laerer))
  {
    System.Console.WriteLine("Læreren {0} får {1} i løn", p.Navn, ((Laerer)p).Loen);
  }
}