De Coalescing / Ternary operator in C#
Inleiding
De Coalescing operator en de Ternary operator zul je regelmatig tegenkomen in C# programma’s. Daarom een posting over deze bijzondere operatoren. We lichten het weer toe aan de hand van de legende van Willem Tell.
Terugkomend op de posting over Willem Tell, zoeken we iemand die landvoogd wil worden. In eerste instantie bedankt iedereen voor deze hondenbaan en variabele kandidaat heeft nog geen waarde. De naam van de landvoogd krijgt via een coalescing operator de waarde Geen:
Coalescing operator
// De landvoogd
Landvoogd landvoogd = new Landvoogd();
// Niemand gevonden
string kandidaat = null;
bool vacatureIsVervuld;
// Coalescing operator
landvoogd.Naam = kandidaat ?? "Geen";
Console.WriteLine(
"En de landvoogd is: {0}", landvoogd.Naam);
Uiteindelijk is Gessler beschikbaar (na de zoveelste arbeidsconflict op de andere afdeling en aantijgingen van grensoverschrijdend gedrag waardoor ze hem liever kwijt dan rijk zijn). Gessler is de enige kandidaat en via de coalescing operator (??) wordt de naam van de landvoogd Hermann Gessler omdat variabele kandidaat een waarde heeft (die van Hermann Gessler). Gessler reist af naar kanton Uri en we wensen hem veel succes toe in zijn nieuwe baan:
// Gessler wil wel landvoogd worden
kandidaat = "Hermann Gessler";
landvoogd.Naam = kandidaat ?? "Geen";
Console.WriteLine(
"En de landvoogd is: {0}",
landvoogd.Naam);
Ternary operator
Het heugelijke nieuws dat de vacature van landvoogd is vervuld brengen we tot uiting in boolean variabele vacatureIsVervuld waarbij de variabele als volgt door een ternary operator (?) wordt gevuld:
// Ternary Operator
vacatureIsVervuld =
landvoogd.Naam != "Geen" ? true : false;
if (vacatureIsVervuld)
Console.WriteLine("We hebben een landvoogd!");
// Gessler, have fun over there in Uri
landvoogd.Kanton = "Uri";
Resultaat:
Slot
Het is een stijl van programmeren om zo beknopt (en zo cryptisch) mogelijk te programmeren en veel programmeurs zweren erbij. Als dat jouw stijl van programmeren is dan denk ik dat je erg gecharmeerd zal zijn van Coalescing en Ternary operatoren.
Hopelijk ben je met deze posting weer wat wijzer geworden en ik hoop je weer terug te zien in één van mijn volgende blog posts. Wil je weten wat ik nog meer over C# heb geschreven? Hit the C# button…
Voorbeeldprogramma
using System;
namespace BijzondereOperatoren
{
class MainClass
{
class Landsknecht
{
public string Naam { get; set; }
}
class Landvoogd: Landsknecht
{
public string Kanton { get; set; }
}
public static void Main(string[] args)
{
// De landvoogd
Landvoogd landvoogd =
new Landvoogd();
// Niemand gevonden
string kandidaat = null;
bool vacatureIsVervuld;
// Coalescing operator
landvoogd.Naam = kandidaat ?? "Geen";
Console.WriteLine(
"En de landvoogd is: {0}",
landvoogd.Naam);
// Gessler wil wel landvoogd worden
kandidaat = "Hermann Gessler";
landvoogd.Naam = kandidaat ?? "Geen";
Console.WriteLine(
"En de landvoogd is: {0}",
landvoogd.Naam);
// Ternary Operator
vacatureIsVervuld =
landvoogd.Naam != "Geen" ? true : false;
if (vacatureIsVervuld)
Console.WriteLine("We hebben een landvoogd!");
// Gessler, have fun over there in Uri
landvoogd.Kanton = "Uri";
}
}
}