Difference between property and field in C#

As per Object Oriented Programming principles internal of class should be hidden from outside world. So it is recommended to wrap fields of a class with properties, get,set in C# and keep fields private. By doing this object fields are safe and we can do some processing, event invocation, validation etc. while changing value of a field using properties or get set functions.

Here is sample for wrapping field into c# properties

    public class SampleClass
{
// this is a field.  It is private to your class and stores the actual data.
private string _myField1;
// this is a property.  When you access it uses the underlying field, but only exposes
// the contract that will not be affected by the underlying field
public string MyField1
{
get
{
return _myField1;
}
set
{
_myField1 = value;
OnChangeField1();
}
}
private void OnChangeField1()
{ 
//Some code
}
}

In above code we can do processing and other code execution in get and set block.

In C# 3.0 AutoProperty is introduced in which we do not need to declare field separately, we have to just write property with modified syntax. C# 3.0 and above compiler will generate a private field automatically into compiled assembly.

Ref: http://msdn.microsoft.com/en-IN/library/bb384054.aspx

    public class SampleClass
{
public string MyField1
{
get;
set;
}
}

Above two examples will produce same IL code.