C#面向对象–特点

IT技术2年前 (2022)发布 投稿用户
0

一、特点(Property)作为类和结构的成员,是对字段的一种封装办法,实际上是一种特殊的办法,被称为拜访器(Accessor),从而躲藏完成和验证代码,有助于进步字段读取和赋值的安全性和灵活性;

1.特点拜访器包括两品种型:用于读取并返回值的get拜访器,用于赋值新值的set特点拜访器;通常将字段声明为私有字段,然后经过特点来对其进行拜访:
privateintmyNum=10;//特点要读取和赋值的字段,也被称为后备字段(BackingField)publicintMyNum
{get//get拜访器,有必要返回特点声明类型的返回值{returnmyNum;
}set//set拜访器{//do…赋值之前通常加入一些数据验证逻辑myNum=value;//运用关键字value表明运用set拜访器赋值的新值,其类型为特点声明类型}
}//运用时,像字段一样进行拜访:intnum=MyNum+10;//读取特点时,调用MyNum的get拜访器读取myNum的值MyNum=30;//给特点赋值时,调用MyNum的set拜访器给myNum赋值
※在开启优化代码选项时,对get拜访器的调用将由JIT编译器进行办法内联优化,不存在办法调用开销,但无法内联虚特点的get拜访器;
2.特点根据其声明的拜访器品种分为三种:读写特点(一起声明get拜访器和set拜访器)、只读特点(只声明get拜访器)和只写拜访器(只声明set拜访器);
※只写特点很少呈现,常用于约束对敏感数据的拜访;
3.拜访器的可拜访性默许与特点的可拜访性相同,当特点一起声明晰get拜访器和set拜访器时,能够给其间恣意一个拜访器添加可拜访修饰符来指定其可拜访性,显式声明的可拜访性要比特点自身的可拜访性有更严格的约束;
※通常经过指定公共特点的拜访器可拜访性来保留get拜访器的公共可拜访性,约束set拜访器的可拜访性:
publicintMyNum
{get{returnmyNum;
}privateset//将set拜访器声明为私有的{
myNum=value;
}
}
4.当拜访器中不需求任何额定逻辑时,能够运用主动完成特点(Auto-ImplementedProperty,简称主动特点,AutoProperty)简化特点的声明办法,不再需求独自声明一个字段,将由编译器创立仅能够经过拜访器拜访的专用、匿名字段(无法在客户端代码中直接拜访该字段),声明拜访器时也不需求供给详细完成:
publicintMyProperty{get;set;}
※主动特点的拜访器仍然能够运用拜访修饰符;
※主动特点有必要声明get拜访器,只读的主动特点能够在初始化时和构造函数中赋值;
※在C#6.0以上版本中,能够像字段一样初始化主动特点:
publicintMyProperty{get;set;}=10;
※主动特点是编译器为我们预备的一种语法糖;
5.当特点所封装的类型是一个值类型时,运用get拜访器得到的对象不能直接对其成员进行修改,详见;
二、经过反射能够获取类型中一切的特点信息:
PropertyInfo[]myProperties=typeof(MyClass).GetProperties();for(inti=0;i<myProperties.Length;i++)
{
Console.WriteLine(myProperties[i].Name);//MyNum}
1.在运用反射获取类型的一切办法时,假如类型中包括特点,也会获取特点中的公共拜访器所生成的办法:
typeof(MyClass).GetMethods();//get_MyNumset_MyNumToStringEqualsGetHashCodeGetType
※在运用反射获取类型的一切字段时,假如类型中包括主动特点,会获取到编译器主动声明的私有字段:
typeof(MyClass).GetFields(BindingFlags.NonPublic|BindingFlags.Instance);//k__BackingField
2.检查声明特点的IL代码:
3.检查运用特点读取和赋值的IL代码:
假如您觉得阅读本文对您有协助,请点一下“推荐”按钮,您的认但是我写作的最大动力!

© 版权声明
好牛新坐标 广告
版权声明:
1、IT大王遵守相关法律法规,由于本站资源全部来源于网络程序/投稿,故资源量太大无法一一准确核实资源侵权的真实性;
2、出于传递信息之目的,故IT大王可能会误刊发损害或影响您的合法权益,请您积极与我们联系处理(所有内容不代表本站观点与立场);
3、因时间、精力有限,我们无法一一核实每一条消息的真实性,但我们会在发布之前尽最大努力来核实这些信息;
4、无论出于何种目的要求本站删除内容,您均需要提供根据国家版权局发布的示范格式
《要求删除或断开链接侵权网络内容的通知》:https://itdw.cn/ziliao/sfgs.pdf,
国家知识产权局《要求删除或断开链接侵权网络内容的通知》填写说明: http://www.ncac.gov.cn/chinacopyright/contents/12227/342400.shtml
未按照国家知识产权局格式通知一律不予处理;请按照此通知格式填写发至本站的邮箱 wl6@163.com

相关文章