urenai 发表于 2023-12-26 22:15 真专业! |
说白了,1/权限问题,2/高代码的封装性、一致性和可维护性。 |
读属性和写属性在C#等面向对象编程语言中是指属性的访问器(accessors): 1. **读属性(getter)**:它允许外部代码获取属性的值,但不允许直接修改。当你只想让其他对象读取一个变量的值,而不希望它们直接修改这个值时,你会声明一个只读属性。 ```csharp public string Name { get; private set; } ``` 在这个例子中,`Name`是一个读/写属性,但它的设置器(setter)是私有的,所以外部代码只能读取,不能直接写入。 2. **写属性(setter)**:它允许外部代码设置属性的值。当你希望其他对象能够修改一个变量的值时,你会声明一个可写的属性。 ```csharp public int Age { get; set; } ``` 在这个例子中,`Age`是一个读/写属性,外部代码可以读取和修改其值。 3. **直接操作类变量(字段或实例变量)**:不通过属性访问器,而是直接访问和修改类内部的变量。这种方式提供了最大的灵活性,但也可能降低代码的封装性和安全性。 ```csharp private string _name; public string Name { get { return _name; } set { _name = value; } } ``` 在这个例子中,`_name`是直接操作的类变量,而`Name`是用于封装 `_name` 的一个属性。 区别在于: - **封装性**:属性提供了对类内部状态(变量)的封装,可以通过 getter 和 setter 控制对这些状态的访问。直接操作类变量则没有这种级别的控制,任何具有访问权限的代码都可以直接修改变量。 - **一致性**:通过属性,可以在获取或设置值时执行额外的操作,如验证、转换或触发事件。直接操作类变量则不会自动执行这些额外操作。 - **可维护性**:如果以后需要改变类的实现细节(如添加验证逻辑或改变存储方式),使用属性的话只需修改属性的 getter 和 setter,而直接操作类变量的代码可能需要在多个地方进行修改。 因此,通常建议使用属性来公开类的内部状态,而不是直接暴露类变量,以提高代码的封装性、一致性和可维护性。 |
读属性、写属性以及直接操作类变量的区别如下: 读属性:获取类的成员变量值。 写属性:设置类的成员变量值。 直接操作类变量:直接对类变量进行操作,包括赋值、修改等。 三者区别如下: 读属性:通过getter方法获取类的成员变量值,不会对成员变量造成影响。 写属性:通过setter方法设置类的成员变量值,不会对成员变量造成影响。 直接操作类变量:直接对类变量进行操作,可能会对类的状态造成影响。 |
hs999xl 发表于 2023-12-26 19:16 对了,这就是属性写和属性读的作用 |
同问 |
明靓 发表于 2023-12-26 19:09 应该搭个房子保证自己财产安全,还得有安保,不能谁都能进。哈哈 |
创世魂 发表于 2023-12-26 19:03 “读写属性下可以做更多的验证操作”是不是指“在属性读、写方法里写一些代码保证数据没问题再返回或赋值?” |
hs999xl 发表于 2023-12-26 19:00 写:小鸟没有做房子,把窝搭在树丫上,没有锁门,然后在里面下了三个小鸟蛋,有一天,杜鹃鸟看小鸟妈妈不在偷偷地在里面下了个杜鹃鸟蛋,然后就飞走了,小鸟妈妈莫名其妙地就帮杜鹃鸟养它的孩子. 读:鸟窝露天在外面,有一天窝里来了条蛇,把蛋吃了. 怎样?有何感想? |
|Archiver|手机版|小黑屋|递归火山软件开发平台 ( 鄂ICP备18029190号 )
GMT+8, 2024-11-24 01:07 , Processed in 0.090184 second(s), 22 queries .
Powered by Discuz! X3.4
© 2001-2017 Comsenz Inc.