C# 静态 Class 与 Resharper 建议

C# Static Class with Resharper Recommendations

第一次发帖!长期潜伏者。

我正在创建一个静态 class,这个答案非常有帮助: C# - Winforms - Global Variables

为清楚起见,以下是该答案的代码:

static class Global
  {
    private static string _globalVar = "";

    public static string GlobalVar
    {
        get { return _globalVar; }
        set { _globalVar = value; }
    }
  }

但是,在此过程中,ReSharper 建议将代码更改为:

public static string value1 { get; set; } = "";

public static string value2 { get; set; } = "";

我认为没有任何区别,但我想 100% 确定。

所以我的问题是,两者之间有什么区别吗?如果有,哪一个是最理想的?

那是 "syntactic sugar"。版本

public static string value1 {get;set;} = "";

几乎完全按照以前显式版本的方式编译

private static string _value1 = "";
public static string value1 {
    get { return _value1; }
    set { _value1 = value; }
}

会编译。编译器为您创建支持字段并对其进行初始化。

因此,如果您不需要在 getter 或 setter 方法中做特殊的事情,我更喜欢较短的版本(所谓的 auto-属性), 因为样板代码较少。