c语言字段是什么意思(字段是什么意思)

一、字段的定义

字段是在类或结构中直接声明的任意类型的变量。

声明一个字段,可以用访问修饰符 类型 变量名称来声明,下图是一个简单的示例:

二、属性的定义

属性语法是字段的自然延伸,属性需要有get或者set的访问器。

声明一个属性,可以用访问修饰符 类型 变量名称来声明,下图是一个简单的示例:

三、字段的特性

1.字段通常不使用public关键字,仅在private和protected时才建议使用。如果您要使用public时,建议转为属性。这是为了符合面向对象设计的原因。简单一句话理解就是字段对内,属性对外。

2.可以对字段使用static关键字,这可使字段让调用方在任何时候进行调用,即使不存在任何类的实例。

3.也可以对字段使用static readonly关键字,这样很像const关键字。它们之间的区别是static readonly需要在运行时才可以访问,而const则编译的时候就已经可以访问了。

4.字段是在对象实例的构造函数被调用之前便初始化。 如果构造函数分配了该字段的新值,则它将覆盖在字段声明期间给定的任何值。

5.字段可以使用ref、out关键字传递。

四、属性的特性

1.属性需要定义访问器get或者set,或者两者都有。

2.属性可以隐式定义,即只有简单的get、set。这样声明会非常简洁。如:public int 成员数量 { get; set; }

3.属性还可以使用缓存式定义,这对于一些特殊情形下,非常有用,它通常会结合字段来进行缓存。如下图:

4.字段是变量,但属性不是变量噢。变量是可以使用ref、out关键字传递的,所以字段可以,但属性不可以。

6.属性可以抽象、虚化、密封,即属性可以加上abstract、virtual、sealed关键字。

五、其它的高级特性

1.老是使用get访问器,我是不是等于每次都调用一下方法,这样是不是增加了额外开销?

答:是等于调用方法,但不会增加额外开销。编译器已经自动优化了get访问器,不会产生额外开销。但是当该属性声明为virtual关键字,由于编译器搞不清楚会不会被子类重写属性,所以,这种情况下会产生额外开销。

2.编写属性时,我可以在get访问器更改缓存字段的值吗?

答:如上图,您可以更改缓存字段_number的值。但是这是一种非常差劲的编码风格。您不应该去更改_number字段的值,它的作用就让它仅仅用于记录缓存就好。

祝您用餐愉快。

(0)
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,请发送邮件至 PTU@FOXMAIL.COM 举报,一经查实,立刻删除。