C#.NET中的字段与属性_2 为什么要用属性

属性的好处,就是对存入公共变量的值可以进行处理,如果觉得该值不合法,可以就地变换或者直接提出警告,只不过多花了点点时间,所以有一点点慢。但对于该类所生成的对象的使用安全,还是有相当多的好处的,至少运行时,因公共变量值的错误而产生的问题会大大减少。

用公共变量速度快,就是因为少了中间处理的环节,但是也因此更直接地对类的内容进行了操作和控制,比起属性的使用来说,相对的安全性就变低了。

应该说属性与公共变量各有各的用途,否则公共量变就会被取消掉。

公共变量的好处,就是快。但由于这种用法必须开放变量访问类型为PUBLIC,对象的调用者就可以直接修改其值,值的内容是否合法,运行中是否会出错,就没有了保障。所以一般不建议直接使用公共变量,因为会降低类的可重用性。但偶尔会有些情况,我们根本没必要去使用什么属性,只要用最简单的方法就可以实现的情况,我们还是可以考虑使用公用变量的。

取舍,都是需要根据具体情况来判断的。想获得某方面的优势,都是通过对另一方面某种程度的牺牲换来的。但并不是绝对的谁好,谁不好。

简单说,在你的类中,如果某个变量

1、允许自由读写

2、取值范围仅受数据类型约束而无其它任何特定限制

3、值的变动不需要引发类中其它任何成员的相应变化

那就可以不使用属性,直接使用公共变量,但不建议这么使用

C#.NET中的字段与属性_2 为什么要用属性,布布扣,bubuko.com

时间: 2024-10-13 11:31:18

C#.NET中的字段与属性_2 为什么要用属性的相关文章

C#.NET中的字段与属性_1

一个类中需要有描述这个类信息的数据,而存储这些数据的变量就成为字段. 字段默认的访问级别为private(只有本类可以直接访问),我们将其访问级别改为public,在其他类中就可以访问了. 字段和属性表示对象包含的信息,字段类似于变量,因为可以直接读取或设置他们. 属性是对字段的封装.属性可以对字段的访问进行控制,可以进行非法设置值的判断.属性并不存储数据,字段存储数据. 封装后,有一些字段我只能赋值,不能读取,有些只能读取,不能赋值,而且可以对传过来的值进行选择. 建议所有的字段不要写成pub

逆向删除属性表中的字段

删除属性表中的字段一定要注意循环的方式.如果是for循环,i< FeatureClass.Fields.FieldCount话,每删除一个字段FieldCount属性返回的字段数量将减少一个,也就是你根本不能完全删除想要删除的字段:如果你先把FeatureClass.Fields.FieldCount赋给一个变量count,for循环中使用i<count,最后导致索引越界:所以,建议使用逆向的方法删除字段. IFeatureClass pointFS = GPClass.gpUtilities

SQL SERVER中某个字段属性为varchar,我想把这个字段改成int型

SQL SERVER中某个字段属性为varchar,我想把这个字段改成int型? 这个就有点恼了,作为新手面对这些问题真有点难,这个也是我在百度上查到的,作为基础的整理吧,以后遇到方便查看. 用SQL语句:alter table [aa] alter column bb int eg: 这个是我的例子. 执行成功可以刷新一下数据库(如还是不可以,那就断开现有连接,再次连接就好.)

当数据库中的字段与javabean中对应的属性名不同

当数据库中的字段与javabean中对应的属性名不同时: 在查询语句中对不同的字段起别名,例如: 数据库中的字段名为last_name , javabean中为lastName则:select last_name lastName from...... 原文地址:https://www.cnblogs.com/cn-chy-com/p/9186340.html

图解Elasticsearch中的_source、_all、store和index属性

Elasticsearch中有几个关键属性容易混淆,很多人搞不清楚_source字段里存储的是什么?store属性的true或false和_source字段有什么关系?store属性设置为true和_all有什么关系?index属性又起到什么作用?什么时候设置store属性为true?什么时候应该开启_all字段?本文通过图解的方式,深入理解Elasticsearch中的_source._all.store和index属性. 图1 Elasticsearch中的_source._all.stor

mybatis 插入实体与数据库中的字段不一致的解决方案

1.建立一个实体类 public class Student { private Integer id; private String name; private Double salary; public Student() { } public Student(Integer id, String name, Double salary) { this.id = id; this.name = name; this.salary = salary; } public Integer getI

EHlib在数据单元中显示字段值为图形。

-[定制网格数据单元]  在数据单元中显示字段值为图形.  TDBGridEh allows to show bitmaps from TImageList component depending on field values. TDBGridEh 可以根据字段的值显示TImageList 组件中相应的BMP. To show bitmaps depending on field values need: 要根据字段的值显示BMP图片需要, Fill list of field values

mybitis中对象字段与表中字段名称不匹配(复制)

开发中,实体类中的属性名和对应的表中的字段名不一定都是完全相同的,这样可能会导致用实体类接收返回的结果时导致查询到的结果无法映射到实体类的属性中,那么该如何解决这种字段名和实体类属性名不相同的冲突呢? 方法一:通过在查询的SQL语句中定义字段名的别名的方式,让字段名的别名和实体类中的属性名一致,这样就可以实现实体类属性和表字段一一对应.(通过在SQL语句中定义别名的方法实现) [html] view plain copy <select id="queryCertificationInfo

HTML5之placeholder属性以及如何更改placeholder属性中文字颜色

今天在群里看到群友问了一个这样的问题,就是如何更改placeholder属性中文字的颜色,以前用过这属性,却是没更改过颜色,于是便试了试,中途遇到些问题,查找资料后特来总结一下. 熟悉HTML5的人应该都知道,placeholder这个属性是HTML5中新增的属性,该属性的作用是规定可描述输入字段预期值的简短的提示信息,该提示会在用户输入之前显示在输入字段中,会在用户输入字段后消失,有些浏览器则是获得焦点后该提示便消失(如Safari.IE) 适用范围:placeholder 属性适用于下面的