Большая часть мощи C# обусловлена методами программирования, которые поддерживает язык. Например, в нем имеются объектно-ориентированные функции, обобщения и функциональное программирование. Он поддерживает как динамическую, так и статическую типизацию. Он обеспечивает мощные функции, ориентированные на списки и множества, благодаря языку интегрированных запросов (LINQ). Он имеет встроенную поддержку асинхронного программирования.