what is the different between writing the getter and setter directly
like this
public string Name {get; set;}
They're essentially the same.
The code below you're basically creating the private field and providing both getters and setters for it, which of course does the intended idea. However, the language implementors decided they could make the life of a programmer easier by providing a shorter syntax where you can create a private field and at the same time provide a getter or setter or both.
private string _name;
public string Name
{
get
{
return this._name;
}
set
{
this._name = value;
}
}
So, in C# 3 they(language implementors) came up with the idea of making the syntax shorter by enabling a programmer to simultaneously create a private field and at the same time provide a getter or setter or both.
Behind the scenes, all that happens for the code below is the compiler creates a private field and also provides a getter and setter for it. So, basically, it's shorter more concise syntax to achieve the same task as the example above.
auto-implemented property
public string Name {get; set;}