在C#中使用自动实现的属性是否正确?

我想为属性分配一些默认值,或者想要替换下面给出的一些字符.它是正确的语法还是应该通过创建变量来实现.

 public string Login_Name 
        { 
          get 
            { return this.Login_Name; } 
          set { this.Login_Name = value.Replace("'", "''"); } 
        }
最佳答案
通过访问Login_Name,get将再次返回Login_Name,留下无限循环(StackOverflowException).

您应该使用属性来获取和设置私有成员:

public string Login_Name
{
   get
   {
      return _login_Name;
   }
   set
   {
      _login_Name = value;
      if (!string.IsNullOrEmpty(_login_Name))
      {
         _login_Name = _login_Name.Replace("'", "''");
      }
   }
}
private string _login_Name;

如果您打算使用auto-implemented属性,它将如下所示:

public string Login_Name {get;set;}

但是,自动实现的属性不能将任何其他逻辑应用于其获取或集合.

转载注明原文:在C#中使用自动实现的属性是否正确? - 代码日志