...{
public string Name {get;set;}
}
Is a compiler generated back end field get/set (as opposed to defining your own fields - a short hand for writing code faster).
...{
public string Name;
}
Is a field access definition.
You need get/set for .net data binding to work (as by default it does not bind to field properties in UI components like the grid etc.).
Generally it is better to have get/set since you can do checking and validation if it is needed in the future and the code using this will not change [fields need a recompile].