Monday, 3 April 2023

Properties in C#

 Properties in C# are a way of encapsulating a field or a variable in a class with a getter and/or a setter method. They provide a way of controlling access to the data and enforcing constraints on it.

Here's an example of a simple property in C#:

csharp
public class Person { private string name; public string Name { get { return name; } set { name = value; } } }

In this example, the Name property encapsulates the private field name with a getter and a setter method. The get method returns the value of name, and the set method sets the value of name to the value passed as an argument.

Properties can also have modifiers such as public, private, protected, and internal. In addition, there are two types of properties: read-write properties, which have both a getter and a setter method, and read-only properties, which only have a getter method.

Here's an example of a read-only property in C#:

arduino
public class Person { private int age; public int Age { get { return age; } } }

In this example, the Age property only has a getter method, which returns the value of age. The age field can only be set through the constructor or a private setter method, which enforces the read-only constraint.

Overall, properties are an essential feature of C# classes, providing a way to encapsulate and control access to class data.



Here's some more information about properties in C#:

  1. Auto-implemented properties: Starting with C# 3.0, you can use auto-implemented properties to simplify property syntax. An auto-implemented property declares both the getter and the setter methods implicitly, and the compiler generates the backing field for you. Here's an example:
csharp
public class Person { public string Name { get; set; } }

In this example, the Name property is an auto-implemented property that declares both the getter and the setter methods implicitly.

  1. Expression-bodied properties: Starting with C# 6.0, you can use expression-bodied properties to simplify property syntax further. An expression-bodied property is a read-only property that uses a lambda expression as its body. Here's an example:
arduino
public class Person { private int age; public int Age => age; }

In this example, the Age property is an expression-bodied property that returns the value of the private field age.

  1. Virtual and abstract properties: You can declare properties as virtual or abstract to allow derived classes to override them. A virtual property provides a default implementation that can be overridden by a derived class, while an abstract property requires a derived class to provide an implementation. Here's an example:
csharp
public abstract class Shape { public abstract double Area { get; } } public class Rectangle : Shape { public double Width { get; set; } public double Height { get; set; } public override double Area => Width * Height; }

In this example, the Shape class declares an abstract Area property, which requires derived classes to provide an implementation. The Rectangle class provides an implementation of the Area property using an expression-bodied property that calculates the area of the rectangle based on its width and height.

  1. Property access modifiers: You can use access modifiers such as public, private, protected, and internal to control the visibility of properties. The default access modifier for properties is private. Here's an example:
csharp
public class Person { private string name; public string Name { get { return name; } private set { name = value; } } public void SetName(string newName) { Name = newName; // Can be called from within the class, but not from outside } }

In this example, the Name property has a private setter method, which means it can only be set from within the Person class. The SetName method provides a way to set the Name property from outside the class.

No comments:

Post a Comment

Draw Circle in C#

 Here's an example program in C# that uses the `System.Drawing` namespace to draw a circle on a Windows Form: // Mohit Kumar Tyagi using...