Question: I doubted to post this question to the general StackOverflow, but it is suggested to not post opinion-based questions and this might be one. And ofcourse, this is the software engineering department. Microsoft Docs only describes the how, not the why.

When should one use a:

* property with a `{ get .... ; }` and a [backing field](https://docs.microsoft.com/en-us/dotnet/csharp/properties#attaching-attributes-to-auto-implemented-properties) or;
* a property with a `{ get .. ; private set .. ; }`

Why would you want to show a user of your implementation then a property cannot be set with a literal assignement?

This might be the same topic of the choice between a property named `Result` with a calculation in the Get-method, or a plain method `GetResult()` returning thesame string.

Answer: 
In general, you should only explicitly declare the backing field if there is some reason you need to. Things like playing nice with some existing base class, or working with reflection code that expects a field, or if you want `readonly` (set on initialization) behavior but don’t want to implement that by hand, or your setter is nontrivial.

The language didn’t have auto properties initially, so some of the very old documentation/code might only talk about backing fields. These days, the auto properties are preferred where possible.
This is a matter of preference. I do not like auto properties much, it leads to unnecessarily obscure code. I do use them sometimes but only for the most basic DTO-type of classes.

My problem with them is that the data members of a class are no longer guaranteed to be listed first. If you apply StyleCop you can be sure all data members will be the first thing you see when you study a class. If they are not there, they do not exist. What you will see before the first constructor is all of the class's data, period... Unless there are some of those hidden handy-dandy differently styled auto properties defined further down in the code. I hate that. When I encounter them I often just think "they (C# designers) should never have done this, people cannot handle the responsibility, this convenience is not worth the trouble".