11,570 questions
Best to read Microsoft Learn on init then read the following for private vs init.
For all examples
public enum Gender
{
Female,
Male,
Other
}
Here is a record example which is immutable except for the primary key.
public record PersonRecord
{
public int Id { get; set; }
public string FirstName { get; init; }
public string MiddleName { get; init; }
public string LastName { get; init; }
public Gender Gender { get; init; }
public DateTime? Modified { get; init; }
}
Usage
PersonRecord personRecord = new ()
{
Id = 1,
FirstName = "Karen",
MiddleName = "",
LastName = "Payne",
Gender = Gender.Female,
Modified = DateTime.Now
};
Or make one property immutable
public class PersonClass
{
public int Id { get; set; }
public string FirstName { get; set; }
public string MiddleName { get; set; }
public string LastName { get; set; }
public Gender Gender { get; init; }
public DateTime? Modified { get; set; }
}
Usage
PersonClass personClass = new()
{
Id = 1,
FirstName = "Karen",
MiddleName = "",
LastName = "Payne",
Gender = Gender.Female,
Modified = DateTime.Now
};
Tweak Gender
to private set.
public class PersonClass
{
public int Id { get; set; }
public string FirstName { get; set; }
public string MiddleName { get; set; }
public string LastName { get; set; }
public Gender Gender { get; private set; }
public DateTime? Modified { get; set; }
}
Classic get only
public class PersonClass
{
public int Id { get; set; }
public string FirstName { get; set; }
public string MiddleName { get; set; }
public string LastName { get; set; }
public Gender Gender { get; init; }
public DateTime? Modified { get; set; }
public string FullName
{
get
{
return $"{FirstName} {MiddleName} {LastName}";
}
}
}
Expression body member get
public class PersonClass
{
public int Id { get; set; }
public string FirstName { get; set; }
public string MiddleName { get; set; }
public string LastName { get; set; }
public Gender Gender { get; init; }
public DateTime? Modified { get; set; }
public string FullName => $"{FirstName} {MiddleName} {LastName}";
}
And for completness
public record Person1(string FirstName, string MiddleName, string LastName);
Used (read-only)
Person1 person1 = new("Karen", "","Payne");