首页 > 试题

field怎么读

更新时间:2022-12-04 16:11:18 阅读: 评论:0

初一数学上册自主答案-发展的实质


2022年12月4日发(作者:婚假请假条格式)

C#属性(Property)和字段(Field)的区别

导读:

近期学习过程中发现了⼀些问题,我的学习只是学习,敲代码就是敲代码,没有加⼊思考,也不问为什么就直接去敲⼈家写好的例⼦去敲,

把知识都学死了,逐渐散失了思考能⼒,所以学习的兴趣⼤打折扣,正如那句话—学⽽不思则罔,思⽽不学则殆,在设计模式中偶然看到了属

性和字段,想想之前的C#中也提到过,但是从来没有思索过为什么有属性和字段?下⾯就来详细说明。

【字段】

字段(Field)是⼀种表⽰与对象或类关联的变量的成员,字段声明⽤于引⼊⼀个或多个给定类型的字段。字段是类内部⽤的,private类型

的变量(字段),通常字段写法都是加个"_"符号,然后声明只读属性,字段⽤来储存数据。

【属性】

属性(Property)是另⼀种类型的类成员,定义属性的⽬的是在于便于⼀些私有字段的访问。类提供给外部调⽤时⽤的可以设置或读取⼀个

值,属性则是对字段的封装,将字段和访问⾃⼰字段的⽅法组合在⼀起,提供灵活的机制来读取、编写或计算私有字段的值。属性有⾃⼰的名

称,并且包含get访问器和t访问器。

声明格式:

属性修饰符类型属性名

{

get{

//get访问器代码

}

t{

//t访问器代码

}

}

属性分类:根据get访问器和t访问器是否存在,属性可按下列规则分类。

那么问题来了,既然已经有字段⽤来存储数据,为什么还要引⼊属性来对数据进⾏访问,把声明的字段直接定义成公有的不就可以了吗?

解答:在C#中,我们可以⾮常⾃由的、毫⽆限制的访问公有字段,但在⼀些场合中,我们可能希望限制只能给字段赋于某个范围的值、或是要

求字段只能读或只能写,或是在改变字段时能改变对象的其他⼀些状态,这些单靠字段是⽆法做到的,于是就有了属性,属性中包含两个块:

t和get,t块负责属性的写⼊⼯作,get块负责属性的读取⼯作。在两个块中都可以做⼀些其他操作,如在t中验证赋的值是否符合要求并

决定是否进⾏赋值。当缺少其中⼀块时属性就只能读或只能写,t和get块中属性必需有⼀个,因为即不能读⼜不能写的属性是没有意义的。

总之,外部能够访问和修改定义为public的字段,这么做是违反类的安全性设计原则的,所以⼀般的字段都是设为私有的,字段的访问便是由

属性来实现。

C#通过属性特性读取和写⼊字段(成员变量),⽽不直接直接读取和写⼊,以此来提供对类中字段的保护。

【属性VS字段】

【适⽤情况】

公共字段:

1.允许⾃由读写

2.取值范围只收数据类型约束⽽⽆其他任何特定限制;

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

如果均满⾜上述条件,那么我们便可以⼤胆地使⽤公共字段;

属性:

1.要求字段只能读或只能写;

2.需要限定字段的取值范围;

3.在改变⼀个字段的值的时候希望改变对象的其它⼀些状态;

如果满⾜上述条件中的任何⼀个,就应该使⽤属性。

【代码展⽰】

pulicclassUr

{

privatestring_name;//_name为字段

publicstringName//Name为属性,它含有代码块

{

get

{

return_name;//读取(返回_name值)

}

t

{

_name=value;//为_name赋值

}

}

Ur类的私有的字段m_name可以通过公开的属性Name对它进⾏读写操作。通过“属性”读取“字段”值时,将触发get访问器;通过“属

性”为“字段”赋值,将触发t访问器。

【总结】

属性以灵活的⽅式实现了对私有字段的访问,是字段的⾃然扩展,⼀个属性总是与某个字段相关联,字段能⼲的,属性⼀定能⼲,属性能⼲

的,字段不⼀定⼲的了;为了实现对字段的封装,保证字段的安全性,产⽣了属性,其本质是⽅法,暴露在外,可以对私有字段进⾏读写,以

此提供对类中字段的保护,字段中存储数据更安全。

尾⾔:

⽆论是属性还是字段都有它存在的意义,需求多种多样,就产⽣多种多样的对策,属性和字段算是C#中的基础知识,掌握好基础知识,建

造的⾼楼⼤厦才更好的扎实稳固。

本文发布于:2022-12-04 16:11:18,感谢您对本站的认可!

本文链接:http://www.wtabcd.cn/fanwen/fan/88/51777.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

上一篇:瑜组词
标签:field怎么读
相关文章
留言与评论(共有 0 条评论)
   
验证码:
推荐文章
排行榜
Copyright ©2019-2022 Comsenz Inc.Powered by © 专利检索| 网站地图