C#属性,字段和成员变量的关系区别

 我来答
greystar_cn
2018-05-30 · 知道合伙人软件行家
greystar_cn
知道合伙人软件行家
采纳数:16407 获赞数:17260
本人主要从事.NET C#方向的技术开发工作,具有10多年的各类架构开发工作经验。

向TA提问 私信TA
展开全部

我们先来写一个类Person,字段为:name、age、sex,属性:Name、Age、Sex。那么,成员变量:name、age、sex、Name、Age、Sex。字段和属性,都可以叫做是成员变量。属性和字段都是用来存储数据的,但肯定是有不同的(要不然也不会起两个名字,干脆叫一个名算了~)。

  • public class Person  

  • {  

  • // 字段  

  • private string name;  

  • private int age;  

  • private string sex;  

  • // 属性  

  • public string Name  

  • {  

  • get { return name; }  

  • set { sex = value; }  

  • }  

  • public int Age  

  • {  

  • get { return age; }  

  • set { age = value; }  

  • }  

  • public string Sex  

  • {  

  • get { return sex; }  

  • set { sex = value; }  

  • }  

  • }  

  • 字段一般用在类的内部使用,属性一般供外部类访问。按照类的设计原则,字段都是private的,只能在类的内部使用,如果是public的,那么外部类谁都有可能访问,对字段进行破坏性的修改,这是我们不希望看到的,所以字段一定是private的。

    属性想当于是给字段加了一个保护套,如果想读这个字段的值,属性里面走的一定是get{},如果想给字段赋值,属性里一定走的是set{},那么程序员可以在get{}和set{}中增加一些限制,验证要赋值的内容,或者让某个字段只能读不能赋值(对应该字段的的属性只让它有get{},不写set{})。对于外部使用者来说只能够使用它,不能控制它,如何控制操作是由类自身决定的(或者说是由程序员决定的,嘿嘿~)。

    另外,字段值可以用作ref、out参数,而属性不能。

黎卓心
2020-07-07 · TA获得超过117个赞
知道小有建树答主
回答量:101
采纳率:0%
帮助的人:58.1万
展开全部
class Person
{
private int _age = 0; // 字段:分配内存 也是成员变量
public string name{ get; set; }//属性:不分配内存
public int Age // 属性
{
get{ return _age; }
private set{ _age = value;}
}
void Init()
{
int myage = _age;//myage 是局部变量,分配内存,不是字段
}
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式