What are Automatic Properties in C# and what is their purpose?
Automatic Properties are used when no additional logic is required in the property accessors.
The declaration would look something like this:
public int SomeProperty { get; set; }
They are just syntactic sugar so you won't need to write the following more lengthy code:
private int _someField;
public int SomeProperty
{
get { return _someField;}
set { _someField = value;}
}
What's the point of an auto property?
Because it gives you the potential to add encapsulated logic later without changing the metadata of the class.
Using properties is considered a best practice - automatically implemented properties were designed to take away the tediousness of writing properties to encourage developers to adhere to this best practice
automatic properties in C#
You're still creating a private variable - it's just done for you behind the scenes by the compiler. The variable is given an "unspeakable name", ensuring you can't refer to it in source code.
You're still getting all the benefits of properties (you can later change from an automatic property to a "manual" property, with no compatibility issues) but without all the cruft. The benefit is just that the code ends up being a lot more concise. I regard that as a significant benefit though :)
C# 3.0 auto-properties — useful or not?
We use them all the time in Stack Overflow.
You may also be interested in a discussion of Properties vs. Public Variables. IMHO that's really what this is a reaction to, and for that purpose, it's great.
what is the exact use of auto implemented properties
Having a field inside a class is not a good idea. using properties allows you to encapsulate your data better. and when you just want to have a field accessible without any logic in you class then you can use automatic properties.
there are many scenarios that using a field inside your class makes things go wrong and harder as your software evolve.
for example: assume you have
public class C
{
public int Value;
}
in your code base.
then suddenly you realize that Value
can not be set to zero. Then you have to make Value
private and provide a SetValue()
and GetValue()
method. This is easy. but wait, how you gonna handle all other codes that relies on Value
now?
but think about this one
public class C
{
public int Value { get; set; }
}
now it just needs a backing field like _value
and implementing the setter
and getter
.
Public Fields versus Automatic Properties
In a related question I had some time ago, there was a link to a posting on Jeff's blog, explaining some differences.
Properties vs. Public Variables
- Reflection works differently on variables vs. properties, so if you rely on reflection, it's easier to use all properties.
- You can't databind against a variable.
Changing a variable to a property is a breaking change. For example:
TryGetTitle(out book.Title); // requires a variable
Difference between Automatic Properties and public field in C# 3.0
Because they are implemented differently in the resulting IL code (and machine language). An Automatic property is still exposed as a public getter and setter, whereas a public field is just that - a single field..
Thus, implementing an auto property allows you at some later date to change the internal behavior of either the getter or setter (like adding a validator) without recompiling or re=coding any dependant classes that use it...
Related Topics
Creating a Datetime in a Specific Time Zone in C#
How to Use Reflection to Invoke a Private Method
How to Cast Object of Type 'System.Dbnull' to Type 'System.String'
Visual Studio Publish Project into One Simple Installer
What's the Difference Between the 'Ref' and 'Out' Keywords
Show/Hide the Console Window of a C# Console Application
How to Add a New Row to Datagridview Programmatically
Random.Next Returns Always the Same Values
Replacing .Net Webbrowser Control With a Better Browser, Like Chrome
Difference Between Covariance & Contra-Variance
Make a Borderless Form Movable
Make an Installation Program For C# Applications and Include .Net Framework Installer into the Setup
Enum Tostring With User Friendly Strings
Is Floating-Point Math Consistent in C#? Can It Be
How to Monitor SQL Server Table Changes by Using C#
How to Speed Up the Build and Run Process in Unity for Mobile Devices iOS/Android