Abstraktion handlar om att dölja komplexitet och bara visa det som är nödvändigt för användaren. Det fokuserar på vad koden gör, snarare än hur den gör det. I C# implementeras det framför allt genom gränssnitt (interfaces) och abstrakta klasser.
Det ger flexibel kod som är lättare att underhålla, testa och bygga vidare på.