← Back to Blog
Engineering2 min read

Understanding C# and the .NET Ecosystem

A clear introduction to C#, .NET, and how properties help organize access to data in an object-oriented program.

By Esra Durmaz

  • C#
  • .NET
  • Object-Oriented Programming
  • Properties

C# and .NET are often mentioned together, but they are not the same thing. C# is a programming language; .NET is the platform and set of tools commonly used to build and run C# applications. Understanding that distinction makes the ecosystem easier to navigate.

C# is the language

C# is a statically typed, general-purpose language with object-oriented features. A program written in C# is made up of types such as classes and structs, along with methods and properties that describe behavior and data.

Properties are a useful example of how the language supports controlled access. They look similar to fields when used, but can define what happens when a value is read or changed:

public class Profile { public string Name { get; set; } = string.Empty; public int YearOfBirth { get; private set; } }

In this example, callers can read and update Name, while only code inside Profile can update YearOfBirth. This is one way to keep an object's state within rules chosen by its author. It is useful to think of a property as a public interface to data, not simply as a differently named field.

What .NET provides

.NET provides a runtime, libraries, and development tools. When a C# application runs, the .NET runtime manages execution and provides services such as memory management. The standard libraries provide reusable functionality for common tasks, including working with collections, files, networking, and dates.

The .NET Framework is the original Windows-focused implementation of .NET and remains relevant to many existing applications. Modern .NET evolved from .NET Core and supports development across Windows, Linux, and macOS. When working on a project, the target framework matters because it determines the available APIs and runtime requirements.

How the pieces fit together

A typical workflow is to write source code in C#, build it with the .NET SDK, and run the resulting application on a compatible .NET runtime. The SDK contains tools for creating, building, and testing projects; the runtime is what executes an application after it has been built.

For example, the .NET CLI can create and run a basic console project:

dotnet new console --name HelloDotnet cd HelloDotnet dotnet run

The command-line workflow is only one option. IDEs can provide project templates, code completion, debugging, and build controls on top of the same underlying tools.

What I learned

Writing about C# properties helped me connect encapsulation to a practical language feature: a caller can use a simple property while the class controls how its data is accessed. Separating the language from the .NET platform also makes it clearer which part is responsible for syntax, execution, libraries, and tooling.

C# is the language, while .NET supplies much of the environment used to build and run C# applications. Knowing how those pieces relate is a useful starting point for exploring the ecosystem.