温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

C#语言中字段和属性相关知识剖析

发布时间:2020-07-02 21:26:23 来源:网络 阅读:173 作者:宇宙小元帅 栏目:编程语言

针对C#中的字段和属性,很多初学者无法区分这两者之间的区别。

字段与属性比较

字段;是一种“成员变量”,一般在类的内部做数据交互使用,占用内存空间。

属性:a.是一种逻辑变量,一般跟字段一起结合起来使用,是字段的扩展,并不占用实际的内存。

      b.属性其实就是外界访问私有字段的入口,属性本身不保存任何数据。在面向对象设计中主要使用属性描述对象的静态特征。

      c.属性设置过程中一般会用到get和set两个方法。可以在方法里加入逻辑处理数据,灵活拓展使用。

标注:因为属性不占用实际内存,所以属性不能用于方法的ref类型参数

下面举个栗子,如下所示

public Class Student

{

private DateTime _Birthday;

private string _Name;

public string Name

{

get{return _Name;}

set {this._Name=value;}

}

public int Age

{

get {return DateTime.Now.Year-this._Birthday.Year}

}

}

在这个例子中,_Name是字段,而Name为属性,Name属性的get方法为返回学生的姓名,Set方法则是对_Name字段进行赋值。

Age也是类中的一个属性,只不过这个属性是只读属性,get方法返回格式化之后的年龄数据,这就是使用属性很好的控制了返回数据的格式,不然还得专门写个方法去格式化数据。

同时,属性也可以通过相应的条件对字段赋值进行相应的限制,比如我们要限定Student的名字长度最长不能超过5个字,超过5个字的,我们就只截取前面5个字符即可。

为了实现这种效果,我们可以在set方法内做逻辑规则运算,即可轻松实现想要的效果,如下所示,设置Name属性为:

Public string Name

{

  get {return _Name}

  set

 {

        if(value.Length>5)

                this._Name=value.Substring(0,5);

       else

                this._Name=value;

 }

}

直接对字段赋值是无法达到上述效果,你需要在每次给字段赋值的时候,调用函数获取理想值。使用属性可以完美避免非法数据。

使用属性的情况:
要求字段只能读或者只能写;
需要限制字段的取值范围;
在改变一个字段的值的时候希望改变对象的其它一些状态;

使用字段的情况:
允许自由读写;
取值范围只受数据类型约束而无其他任何特定限制;
值的变动不需要引发类中其它任何成员的相应变化。
最后,附上我的ASP.NET学习群,欢迎各位同行入群指导交流。技术群:【.NET技术社区】872894940

备注:此原创文章最早发表于博主个人站点:IT技术小趣屋。

博主个人技术交流群:960640092,博主微信公众号如下:
C#语言中字段和属性相关知识剖析

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI