A lot of people follow the following paradigm:
fields are always private.
properties are only used to expose fields, thus should only be public.
There are plenty of exceptions to this rule (lazy loading, for example).
With auto-properties, I've found it possible to never use fields. If I need my fields to be very basic, I just use auto-properties
private int? ThisIsMoreOrLessAField { get; set; } // Actually a private property
What is generally preferred? Some people like fields because if anyone ever decides to change a field and make it public, it's very obviously bad code and easy to recognize in code-review. It's also easy to look at fields and recognized that it's private to the class. If your properties can be private, that breaks that paradigm. You have to do further inspection to determine if it's public or private.
I'm having a hard time convincing myself either way.
Best Answer
As Robert Harvey said, what is generally preferred is to use fields for what they are designed for (private state), and to use properties for what they are designed for (exposing a public API).
The two exceptions I find in practice are:
Notice in those examples something else happens besides a get or set when the properties are used. Properties in C# are basically snazzy syntax which wraps getVar() and setVar() as seen in Java and COM. In C#, they provide the means to introduce some logic when the properties are used, but to otherwise be treated as an ordinary variable.
If you just have a variable with no logic on set or get, use a field.