黑马程序员技术交流社区

标题: 关于自动属性的问题 [打印本页]

作者: popoluno    时间: 2013-6-15 13:00
标题: 关于自动属性的问题
C#中用get和set对类的属性进行访问和设置,保障类中数据的安全。自动属性是不对字段进行逻辑验证的操作。不设置只读只写属性。那这样是不是相当于什么都没做?以前写的C#程序都没对字段进行访问和设置也可以用。现在好像并不是那么回事。例如一个winform程序中combobox下拉列表菜单用一个类中定义的数据进行绑定的时候如果不设get,set属性绑定进去的是什么system......什么的。。并不是进行赋初值后的数据。设了以后就好了。但是我不懂,既然不设只读只写那要设get和set干吗?难道是说必须得有get属性用的时候才能访问到类中的字段吗?请详答get,set在对字段不设置访问和设置的时候,存在的意义。既自动属性的意义。
作者: 许庭洲    时间: 2013-6-15 14:22
1. 在属性的访问声明中,对属性的值的操作用get关键字标出,对属性的值的写操作用set关键字标出;
2. 例如:
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    using System
    public class File
    {
          private string s_filename;
          public string Filename
          {
                 get
                 {
                      return s_filename;
                 }
                set
                {
                      if(s_filename!=value)
                      {
                              s_filename = value;
                      }
                }
          }   
          public
         {
                public static void Main()
                {
                      File f = new File();
                      f.Filename = "myfile.txt";
                      string s= f.Filename;
                }
           }            
    }
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
3. 只有set访问器,表明属性的值只能进行设置不能读出;
4. 只有get访问器,表明属性的值只能读的,不能改写;
5. 同时具有 set访问器和get访问器,表明属性的值的读写都是允许的。










      









            





















作者: 陈壹    时间: 2013-6-15 19:12
个人理解
属性是为了保证相对应字段赋值与取值的正确性,我们通过属性,在get/set中对字段进行操作
set 赋值,相当于写入;get 取值 ,相当于读取
当get/set同时存在表示读写;
只有get表示只读,想关字段只能在实例初始化是进行赋值操作;
只有set表示只写,只能对其进行赋值,不能读取调用。





欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2