C# is designed for object-oriented programming and the .NET Framework. In C#, all access to the operating system is through objects, and programmers can create their own first-class objects. C# supports defining classes with members like fields, methods, and properties. Classes can inherit from base classes and implement interfaces. C# also supports key OOP features like polymorphism, events, operator overloading, and type conversion. The .NET Framework is geared toward component-based development using pre-compiled objects.