C#属性的应用_第1页
C#属性的应用_第2页
C#属性的应用_第3页
C#属性的应用_第4页
C#属性的应用_第5页
已阅读5页,还剩9页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、公有属性是在任何外部类都可访问到的,如果有人不怀好意就会随意的修改的public字段, 很危险的,但是如果改成private,就不能擅自修改,只能通过属性,而在属性里是可以加 代码来判断别人付的值是否符合你的要求,不符合的可以直接拒绝赋值,这样就增加了安全 性区分C#的字段和属性程序代码public class TestClassprivate string _AA;public string BBget set 在上边例子中我们都知道_AA是字段,BB是属性,再看下边的例子:程序代码public class TestClasspublic string _AA;private string

2、BBget set _AA是字段还是属性? BB是字段还是属性?突然发现长久以来潜意识的竟用private和 public来区分字段还是属性了,潜意识认为private的是字段,public的是属性!实际上,字 段还是属性的区别应是看有无访问器,无访问器的为字段,有访问器的则为属性,所以,第 二个例子中_AA仍是字段,BB仍是属性。我们再来看一个例子:程序代码public class TestClasspublic string AA;public string BBget set 对外界而言,访问上边字段和属性其实中一样的,那字段和属性有什么区别呢?个人认为主 要区别有以下几点:可在get和

3、set块对属性的取值范围等做限制,而字段的范围只取决于其类型,无法精确 控制;可通过设置get和set块的有无,设置属性的读写权限;正因为上边几点,所以我们常常在声明一个public属性的同时声明一个private字段,在字 段中保存属性的值以便在读取属性值时使用:程序代码public class TestClasspublic string _AA;public string BBgetif (_AA.Substring(0, 1) = )return _AA;elsereturn string.Empty;set _AA = value; 注:在类内部使用字段和属性没有一点区别,不受访问权

4、限的限制!反省字段与属性的区别关于字段(field)和属性(Property)的区别:class MyClasspublic string Nameget return Name;set Name=value;C#中有这个功能能够将字段包装以属性的方式来读取字段的内容。也就是说可以将代码修改 成下面这样:class MyClasspublic readonly string name;public string Nameget return name;set name=value;public MyClass()name=abc;static viod Main()MyClass obj1=n

5、ew MyClass();Consol.writeLine(obj1.Name);输出结果为abc;原来属性是对字段的一种封装方式,可以使其更有实用性。在C#中,字段和属性的区别是什么?还有为什么要封装?字段.是指数据库中某一列.比如某数据表中有ID.NAME.那么这就是两个字段.而属性.是指在实例类中相应的属性.针对上述字段.该类中就声明两个属性.一个ID.一个 NAME.封装起来是为了方便使用.体现面向对象.层次清楚.如:某页面要显示某用户的信息.在该页面需要操作的数据其实都是该实例类中的属性.而不 用再对数组.dataset.datatable等进行操作.字段一般定义为私有的,为了防止外

6、界随意访问,属性就是可控的字段访问,让用户通过属 性访问字段,我们可以在属性里做很多事,比如判断用户权限、验证用户提供的值的合法性 等等等 字段与属性的区别public class Classiprivate int m_member;public Classi()public int membergetreturn m_member;setm_member=value;和public class Classipublic int m_member;public Classi()有什么区别呢?后者显得简洁得多,为什么却看到多数人都在使用前者?数据成员最好不要设置成public的,即数据隐藏。属

7、性可以设置是否读写,可以在get和set中加入一些控制,适合和外部交互使用,字段是 在程序内部使用,是隐藏的例如:private int a=0;public int Agetreturn this.a;setthis.a=value;这样的话,如果我用你的类只能看到属性A,而不是内部字段a,这样的好处不言而喻吧/如果程序要求a的赋值范围必须是0-100之间/使用属性可以将验证范围的操作封装在类体内,/否则只能依赖外部来验证(这悖离了 “高内聚”的原则,该是本类做的封装在本类内)。private int a=0;public int Agetreturn this.a;setif(value

8、= 0 & value = 6)password = value;elseConsole.WriteLine(密码非法,密码长度不小于6);Console.WriteLineC 密码默认为:111111);password = 111111;public string Sexget return sex; setif (value.Equals(男)| value.Equals(女)sex = value;elseConsole.WriteLine(性别非法,必须为“男”或“女”);Console.WriteLineC 性别默认为:男);sex =男”;(sSje SuiJis)uieiAi

9、piOA oiieisLuejSojd ssepeiisqeMSedseujeu flxei-iueisAsSuisn fbun-iueisAsSuisn bijeueg-suoiiDeiioo-ujeisAsSuisn fiueisAsSuisn:*王:(X3S,S!IU ,0:临击k)3U!KWMP|0Su。f(pjo/vssed-S!qi,0 :钮罪,)3un叫Mwiosu。f(9ixjeN-S!qi,0:日阻,)3叩叫mw|OSu。()。阳|人2|ds!e piOA DiiqndUseru = new User();Console.WriteLine(=用 户注册=);Console.Write(,请输入用户名:);u.Name = Console.ReadLine();

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论