【问题标题】:What is the syntax in C# for creating setters and getters?C# 中用于创建 setter 和 getter 的语法是什么?
【发布时间】:2010-05-09 16:16:56
【问题描述】:

我对这种新的语法糖很熟悉:

public string Name { get; set; }

但是,如果我是该变量的设置者以进行某种检查怎么办。例如,我想将应该设置为所有小写的整个字符串。

public string Name
{
   get;
   set 
   {
      ????
   }
}

【问题讨论】:

    标签: c#-3.0 get set


    【解决方案1】:

    你需要一个用于 getter 和 setter 的支持字段(你不能有一个部分自动的属性):

    private string name;
    public string Name
    {
       get
       {
         return name;
       }
       set 
       {
         // do validation or other stuff
         name = value.ToLower();
       }
    }
    

    【讨论】:

      【解决方案2】:

      你不能定义一个部分自动的属性。你必须用老式的方式做事:定义支持字段并自己实现 getter 和 setter 逻辑。

      【讨论】:

        【解决方案3】:
        private string _name;
        
        public string Name
        {
           get {return _name;}
           set 
           {
             _name = value.ToLower();
           }
        }
        

        【讨论】:

        • _There _are _guidelines _for _this - _don't _use _underscores。
        • @Callum Rogers - Ahahahaaha.. 在一个原本糟糕透顶的早晨,这给我带来了微笑。
        【解决方案4】:

        那么你就不能使用自动生成的get/set功能了:

        string _name;
        
        public string Name {
            set { _name = value.ToLower(); }
            set { return _name; }
        }
        

        【讨论】:

          【解决方案5】:

          public string Name { get; set; } 这些被称为自动实现的属性。在 C# 3 及更高版本中,您可以将此语法用于属性。但是如果你想在设置之前对值进行任何操作,那么这没有帮助。另一个缺点是,你必须同时使用 set 和 get,你不能只声明 getter。另一种方法是将设置器设为私有。在您的情况下,您必须使用旧版本的属性。

          private string _name;
          public string Name
          {
             get {return _name;}
             set 
             {
                //do any operation
               _name = value.ToLower();
             }
          }
          

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2011-02-07
            • 2014-12-20
            • 2017-05-21
            • 1970-01-01
            • 2015-03-29
            相关资源
            最近更新 更多