DEV Community

Nick
Nick

Posted on

A Guide To Crafting Immutable Objects With C# 10 Init-Only Properties

In the world of object-oriented programming, immutability is a highly desirable trait for objects. Immutable objects are objects whose state cannot be changed once they are created. This can lead to more predictable and easier-to-understand code, as well as less potential for bugs.

In C# 10, a new feature called init-only properties was introduced to make it easier to create immutable objects. Init-only properties allow you to set the initial value of a property when an object is created, but prevent the property from being changed afterwards.

Let's take a look at how we can use init-only properties to create immutable objects in C#:

public class Person
{
    public string FirstName { get; init; }
    public string LastName { get; init; }

    public Person(string firstName, string lastName)
    {
        FirstName = firstName;
        LastName = lastName;
    }
}

public class Program
{
    public static void Main()
    {
        Person person = new Person("John", "Doe");
        // person.FirstName = "Jane"; // Compile error - cannot modify init-only property
    }
}
Enter fullscreen mode Exit fullscreen mode

In the code snippet above, we have defined a Person class with two init-only properties: FirstName and LastName. When an instance of the Person class is created, the values of these properties are set using the constructor. Once the object is created, the values of these properties cannot be changed.

This can be particularly useful when working with collections of objects, where immutability can prevent accidental modifications of the objects' state. By using init-only properties, you can ensure that your objects remain in a consistent state throughout their lifetime.

In conclusion, utilizing C# 10's init-only properties is a powerful tool for crafting immutable objects. By leveraging these features in your code, you can create more robust and predictable applications. Immutable objects can lead to cleaner, more maintainable code and reduce the potential for bugs. So next time you're designing your classes, consider using init-only properties to create immutable objects.

Top comments (0)