Skip to main content

Class Properties in C# Explained

Properties in C#

Property is an extension of class variable and it provides a mechanism to read, write or change the value of the class variable without affecting the external way of accessing it.

 

Properties can contain one or two code blocks called accessors and those are called a get accessor and set accessor in C#. By using get and set accessors, we can change the internal implementation of class variables and expose it without affecting the external way of accessing it.

 

Generally, in object-oriented programming languages like C# you need to define fields as private, and then use properties to access their values in a public way with get and set accessors.

 

The following is the syntax of defining a property with get and set accessor in C#.

 

 <access_modifier> <return_type> <property_name>

        {

            get

            {

                // return property value

            }

            set

            {

                // set a new value

            }

        }

If you observe the above syntax, we used an access modifier and return type to define a property along with get and set accessors to make required modifications to the class variables.

 

Here, the get accessor code block will be executed whenever the property is read and the code block of set accessor will be executed whenever the property is assigned to a new value.

 

The properties are categorized as three types in C#, these are.

Type

Description

Read-Write

A property which contains a both get and set accessors, then we will call it as read-write property.

Read Only

A property that contains only get accessor is called a read-only property.

Write Only

A property that contains only set accessor is called a read-only property.

 

Properties won’t accept any parameters and we should not pass a property as a ref or out parameter in C#.

 

The following is a simple example of defining a private variable and a property in C# language.

 

    public class Person

    {

        private string name;

        public string Name

        {

            get { return name; }

            set { name = value; }

        }

    }

 

If you observe the above sample code, we defined a property called “Name” and we used a get accessor to return a property value and set accessors to set a new value. Here, the value keyword in set accessor is used to define a value that is being assigned by set accessor.

 

In C#, the get accessor needs to be used only to return the field value or to compute it and return it but we should not use it for changing the state of an object.

 

As discussed earlier, we can extend the behavior of class variables using properties get and set accessors. The following code is an example of extending the behavior of private variable in property using get and set accessors in C#.

 

     public class Person

    {

        private string name = "Musa Sule";

        public string Name

        {

            get

            {

                return name.ToUpper();

            }

            set

            {

                if (value == "Gadabs")

                    name = value;

            }

        }

    }

 

From the above example, we are extending the behavior of private variable name using a property called Name with get and set accessors by performing some validations like to make sure Name value equals to only “Gadabs” using set accessor and converting property text to uppercase with get accessor.

 

Here the field “name” is marked as private so if you want to make any changes to this field then we can do it only by calling the property (Name).

 

In C# properties, the get accessor will be invoked while reading the value of a property and when we assign a new value to the property, then the set accessor will be invoked by using an argument that provides the new value.

 

The below code is an example of invoking get and set accessors of properties in C#.

 

Person u = new Person();

 

u.Name = "Sakinat"; // set accessor will invoke

 

Console.WriteLine(u.Name); // get accessor will invoke

 

Example of Get and Set in C# Properties

The following is an example of defining properties with get and set accessors to implement required validations without effecting the external way of using it in C#.

 

using System;

namespace CsharpnaijaTutorial

{

    class Person

    {

        private string location;

        private string name = "Musa Sule";

        public string Location

        {

            get { return location; }

            set { location = value; }

        }

        public string Name

        {

            get

            {

                return name.ToUpper();

            }

            set

            {

                if (value == "Gadabs")

                    name = value;

            }

        }

    }

 

    class Program

    {

        static void Main(string[] args)

        {

            Person person = new Person();

            // set accessor will invoke

            person.Name = "Sakinat";

            // set accessor will invoke

            person.Location = "Abuja";

            // get accessor will invoke

            Console.WriteLine("Name: " + person.Name);

            // get accessor will invoke

            Console.WriteLine("Location: " + person.Location);

            Console.WriteLine("\nPress Enter Key to Exit..");

            Console.ReadLine();

        }

    }

}

If you observe above example, we are extending the behaviour of private variables (namelocation) using properties (NameLocation) with get and set accessors by performing some validations like to make sure Name value is equals to only “Gadabs” using set accessor and converting property text to uppercase with get accessor.

 

When we execute the above program, we will get the result as shown below.


Propeerty


From the above output screen, our variable text converted to upper case and even after we set variable text as “Sakinat”, it displayed text as “Musa Sule” because of the set accessor validation fails in the property.

Creating Read-Only Properties

As earlier discussed, if a property contains the only get accessor, then its call a read-only property. The following is the example of creating read-only properties in C# language.

 

using System;

namespace CsharpnaijaTutorial

{

    class Person

    {

        private string _name;

        private string _location;

        public Person(string name, string location)

        {

            _name = name;

            _location = location;

        }

        public string Name

        {

            get

            {

                return _name;

            }

        }

        public string Location

        {

            get

            {

                return _location;

            }

        }

    }

    class Program

    {

        static void Main(string[] args)

        {

            Person person = new Person("Musa Sule", "Abuja");

            // compile error

            // u.Name = "Sakinat";

            // get accessor will invoke

            Console.WriteLine("Name: " + person.Name);

            // get accessor will invoke

            Console.WriteLine("Location: " + person.Location);

            Console.WriteLine("\nPress Enter Key to Exit..");

            Console.ReadLine();

        }

    }

}

 

If we observe the above sample code, we created a properties using only get accessor to make the properties are read-only based on our requirements.

 

In case, if we uncomment the commented code then we will get a compile error because our Name property doesn’t contain any set accessor to set a new value. It’s a just read-only property.

 

When you execute the above program, you will get a result like as shown below.

 

Read_only Property

 

Creating Write Only Properties

As earlier discussed, if a property contains the only set accessor, then its call a write-only property. Following is the example of creating write-only properties in C#.

 

using System;

namespace CsharpnaijaTutorial

{

    class Person

    {

        private string name;

        public string Name

        {

            set

            {

                name = value;

            }

        }

        private string location;

        public string Location

        {

            set

            {

                location = value;

            }

        }

        public void GetPersonDetails()

        {

            Console.WriteLine("Name: " + name);

            Console.WriteLine("Location: " + location);

        }

    }

    class Program

    {

        static void Main(string[] args)

        {

            Person person = new Person();

            person.Name = "Musa Sule";

            person.Location = "Abuja";

            // compile error

            //Console.WriteLine(u.Name);

            person.GetPersonDetails();

            Console.WriteLine("\nPress Enter Key to Exit..");

            Console.ReadLine();

        }

    }

}

 

If you observe above sample code, we created a properties using only set accessor to make the properties are write-only based on our requirements.

 

In case, if we uncomment the commented code then we will get a compile error because our Name property doesn’t contain any get accessor to return a value. It’s a just write-only property.

 

When you execute the above program, you will get a result like as shown below.

 

Write_only Property
 

Auto Implemented Properties in C#

 

A property is called as an auto-implemented property when it contains accessors (getset) without having any logic implementation.

 

Generally, the auto-implemented properties are useful whenever there is no logic implementation required in property accessors.

 

The following is an example of creating auto-implemented properties in C# language.

 

using System;

namespace CsharpnaijaTutorial

{

    class Person

    {

        public string Name { get; set; }

        public string Location { get; set; }

    }

    class Program

    {

        static void Main(string[] args)

        {

            Person person = new Person();

            person.Name = "Musa Sule";

            person.Location = "Abuja";

            Console.WriteLine("Name: " + person.Name);

            Console.WriteLine("Location: " + person.Location);

            Console.WriteLine("\nPress Enter Key to Exit..");

            Console.ReadLine();

        }

    }

}

 

Auto Property
 

Thank you

 

References

1.     Tutlane

2.     c-sharpcorner

3.     w3schools

4.     microsoft

 


Comments

Popular posts from this blog

Classes in C# Explained

C# Class Explained A class is nothing but an encapsulation of properties and methods that are used to represent a real-time entity, as explained by Guru99 . For instance, if you want to work with Guest’s data as in our previous DataDriven Web application . The properties of the Guest would be the Id, GuestName, Address, Phone number etc of the Guest. The methods would include the entry and modification of Guest data. All of these operations can be represented as a class in C# as shown below. using System; namespace CsharpnaijaClassTutorial {     public class Guest     {         public int Id { get ; set ; }         public string GuestName { get ; set ; }         public string Address { get ; set ; }         public string WhomToSee { get ; set ; }     ...

ASP.NET MVC Views

Views in ASP.NET MVC Application explained Find a related article By  Steve Smith  and  Luke Latham from Microsoft Corporation here In the Model-View-Controller (MVC) pattern, the  view  handles the application's data presentation and user interaction. A view is an HTML template with embedded  Razor markup . Razor markup is code that interacts with HTML markup to produce a webpage that's sent to the client. In ASP.NET MVC, views are  .cshtml  files that use the  C# programming language  in Razor markup. Usually, view files are grouped into folders named for each of the application's  controllers . The folders are stored in a  Views  folder at the root of the application as shown: The  Home  controller is represented by a  Home  folder inside the  Views  folder.  The  Home  folder contains the views for the  About ,  Contact , and  Index...

ASP.NET MVC Routing

ASP.NET MVC Routing ASP.NET MVC routing is a pattern matching system that is responsible for mapping incoming browser requests to specified MVC controller actions. When the ASP.NET MVC application launches then the application registers one or more patterns with the framework's route table to tell the routing engine what to do with any requests that matches those patterns. When the routing engine receives a request at runtime, it matches that request's URL against the URL patterns registered with it and gives the response according to a pattern match. Routing pattern is as follows A URL is requested from a browser, the URL is parsed (that is, break into controller and action), the parsed URL is compared to registered route pattern in the framework’s route table, if a route is found, its process and send response to the browser with the required response, otherwise, the HTTP 404 error is send to the browser. Route Properties ASP.NET MVC routes are res...