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

Sha*_*pta 4 .net c# properties

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

 public string Login_Name 
        { 
          get 
            { return this.Login_Name; } 
          set { this.Login_Name = value.Replace("'", "''"); } 
        }
Run Code Online (Sandbox Code Playgroud)

djd*_*d87 13

通过访问Login_Nameget会返回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;
Run Code Online (Sandbox Code Playgroud)

如果您打算使用自动实现的属性,它将如下所示:

public string Login_Name {get;set;}
Run Code Online (Sandbox Code Playgroud)

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