De operator is expliciet en impliciet te gebruiken door het keyword implicit of explicit te gebruiken vooraf de operator.
Bij het gebruik van een impliciete conversie mag er geen exception optreden en ook geen dataverlies tussen beide objecten zijn.
Een operator is een static method zonder methode naam.
In het geval van een impliciete conversie krijg je dan een volgend scenario:
class Patient
{
public string Achternaam { get; set; }
public string Voornaam { get; set; }
public string PatientNummer { get; set; }
public static implicit operator Patient(Klant klant)
{
var p = new Patient()
{
Achternaam = klant.Achternaam,
Voornaam = klant.Voornaam
};
return p;
}
}
voor Explicit geldt het volgende:
class Klant
{
public string Achternaam { get; set; }
public string Voornaam { get; set; }
public static explicit operator Klant(Patient patient)
{
var k = new Klant()
{
Achternaam = patient.Achternaam,
Voornaam = patient.Voornaam
};
return k;
}
}Met bovenstaande klasses kun je dus de volgende code schrijven:
var k = new Klant(){
Achternaam = "Vos",
Voornaam = "Patrick"
};
Patient p = k;
Voor de implicit operator hoef je dus geen cast mee te geven en worden alle gegevens van Klant overgezet naar Patient.
Om van een Patient een klant te maken wordt de explicit operator gebruikt en dien je wel een cast te gebruiken
var p = new Patient()
{
Achternaam = "Bedlegerig",
Voornaam = "Jan",
PatientNummer = "1234A"
};
Klant k = (Klant) p;
Geen opmerkingen:
Een reactie posten