Your private sample variable is called a backing field, and it holds the actual data for the property. If the property is only basic get/set, there is no need declare a backing field yourself. As Jon Skeet mentioned the backing field will be generated by the compiler behind the scenes. If you requirements change, you can always decide later to declare a backing field yourself, and use that one in your property. Since the rest of your code uses that property, your code will still compile.
When your property contains some logic, the backing field is very usefull.
For example the following can't be done without a backing field ( not within the setter i mean)
public int Sample
{
get { return _sample; }
set
{
if (value > _sample)
_sample = value;
}
}
Also, your property could be written like this if the getter and setter have no logic.
public int Sample { get; set; }