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

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

只读属性就是只有get访问器的属性,通过它能访问私有字段,但外部不能 *** 作私有字段,属性的值就是私有字段的值。 *** 作方法如下:

1、首先,在C#中创建一个自动的只读属性如图所示。

2、即使在类的内部,也无法对该属性赋值,会显示只读。

3、如果将改属性设置get和set,会变成一个可读可写的属性。

4、但是此时,从类的外部也可以修改属性值,这不是想要的效果。

5、配合访问修饰符可以解决问题,给set添加private属性。此时写 *** 作只能内部进行。

6、访问修饰符可以作用在get上或者set上,但是不能同时作用于两者,这样就完成了。

C语言中,数组间不能相互赋值——这是历史遗留问题,当年在B语言中,数组名和指针名是没有区别的(除了数组名定义时自动为数组分配内存),数组名可以指向别的对象或数组。换句话说,数组名之间的赋值是浅赋值。后来C语言的设计者发现这种规则在C语言行不通,但是C语言的设计者又不想破坏对B语言的兼容性,于是就干脆禁止了数组间的赋值(这样B语言程序员在C语言中尝试“数组间浅赋值”的时候就会得到明确的报错)。后来B语言退出历史舞台,而C语言的这种设计却一直保留下来,遗臭万年……

字符数组间的赋值需要用 strcpy 或(如果知道数组长度) memcpy。在这个例子中strcpy(s1.ch,"this")是标准做法。不用担心性能损失,现代编译器都把 strcpy 作为内置过程,可以保证和汇编一样高效(甚至更高效)


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/bake/11898727.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-19
下一篇2023-05-19

发表评论

登录后才能评论

评论列表(0条)

    保存