中易网

C#类中的属性如果设为只读那么属性值是如何来的

答案:2  悬赏:50  
解决时间 2021-01-21 08:24
C#类中的属性如果设为只读那么属性值是如何来的
最佳答案
不矛盾啊,复习一下属性:
class Person
{
private string name; //name字段
public string Name//Name属性
{
get {return name;}
}
}
只读属性就是只有get访问器的属性,通过它能访问私有字段,但外部不能操作私有字段。属性的值就是私有字段的值。也就是说通过只读属性只能读私有字段,不能写私有字段,如果不利用属性,光靠设置字段修饰符就不能完成这个功能。
当然用返回参数的方法也可返回私有字段的值,但是执行get访问器比调用方法开销小。从get访问器返回私有变量并且启用了优化时,对get访问器方法的调用由编译器进行内联,因此不存在方法调用的系统开销。
追问:那私有字段的值从哪里赋值呢?
追答:私有字段也是值类型,任何值类型被使用前必须初始化,正如引用类型被使用前必须实例化。私有字段创建时或者用new初始化为默认值,或者初始化为别的值,或者用类中的方法赋值。
在LINQ to SQL中,属性常用来映射数据库表的字段,下面是O/R设计器产生一个实体类的实例:
[Table(Name = "Person.Contact")]
public class Contact
{
...
private string _FirstName;
[Column(Storage = "_FirstName")]
public string FirstName
{
get { return this._FirstName; }
set { this._FirstName = value; }
}
...
}
私有字段的值来自数据库。实体类的属性一般是读写都有,如果不打算修改数据库,也可以设置为只读。
全部回答
声明为属性其实是一种封装,在属性里不是简单的进行读写,它可以设置为只读,只写,可读写 还能控制一些逻辑,要明白为什么,查一下面向对象你面的封装方面的知识你就能豁然开朗了
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
眼袋大是什么原因?如何去除大眼袋?
南湾学校地址在哪,我要去那里办事
女人左下巴有痣什么意思
烧烤用的鹌鹑是小公鸭吗
分数低找不到学校怎么办?
什么样的电脑能装64位系统
NBA历史最高的人是谁,没有巨人症
红米手机是什么系统的?
“为了某个目的,而四处奔走”的成语是什么?
大话我接了一铁任务 有事没做 但是现在任务栏
祈求……哪怕……祈求……哪怕……祈求……哪
哪些食品容易导致小孩子性早熟?
插上耳机然后拔掉耳机音响声音卡
冬天伴郎穿什么礼服
科比经典语录,多少人把它们当做了座右铭
推荐资讯
ICL7107控制的电压表电路如何转换为电流表
逆变zx7250电焊机380v和220v怎么接
游戏机怎么处理电子干扰暴机状态
士乙 是什么字
选哪个好呢.660显卡,凄惨红与微星
26分之3乘53分之39
请教UPS转换时间控制
云丝棉和PP棉 哪个好
下发了逮捕通知书后,能否取保候审?
什么东西可以产生电压
北仑新港汽配招聘男工送货
如何检测买的狗有没有犬瘟和细小?
手机登qq时,显示手机磁盘不足,清理后重新登
刺客的套装怎么选啊?