承 過去的問題
public string Variable { get; set; }
是以下寫法的縮寫
public string Variable
{
    get { return Variable; }
    set { Variable = value; }
}
想請教為何不能像下面這樣寫
public string Variable
{
    get
    {
        return Variable;
    }
    set
    {
        Variable = string.IsNullOrWhiteSpace(value) ? "" : value.Trim().ToUpper();
    }
}
而要寫成下面這樣
private string variable;
public string Variable
{
    get
    {
        return variable;
    }
    set
    {
        variable = string.IsNullOrWhiteSpace(value) ? "" : value.Trim().ToUpper();
    }
}
C# Property (get & set)
只是一個語法糖,最終會幫你把她轉換成 Get & Set method,並用一個 field 來存放變數
下面這個語法 Variable 並不是一個 string field 所以不能這樣寫
public string Variable
{
    get
    {
        return Variable;
    }
    set
    {
        Variable = string.IsNullOrWhiteSpace(value) ? "" : value.Trim().ToUpper();
    }
}
詳細資訊請看 MSDN
延伸去了解了 public-fields-versus-automatic-properties 之前對fields跟properties不夠了解 感謝