问:C# 属性会自动以默认值执行 set 吗?
答:不会。
public class C { private string _v = ""; public string M { get { return _v; } set { if (string.IsNullOrEmpty(value)) { _v = "itpow"; } } } }
尽管 C# 有默认值,但不代表会去执行 set,如上,初始化 C 之后,输出 M,M 并不是 itpow,也就是说尽管 M 作为 string,具有初始值 null,但并不会以 null 去调用 set。