c#中的"属性"和"域"有什么关系?如下的代码,数据是存在属性中还是存在域中? 类省略了

c#中的"属性"和"域"有什么关系?如下的代码,数据是存在属性中还是存在域中?类省略了privateint_name;publicintName{get{return_n... c#中的"属性"和"域"有什么关系?如下的代码,数据是存在属性中还是存在域中?
类省略了private int _name;
public int Name {
get{return _name;}
set{_name = value;}
}

但是这种方式属性有什么意义?c#也能和java那样直接给实例域写setget方法不是更好么……
展开
 我来答
魔法软糖™
2016-12-03 · TA获得超过837个赞
知道小有建树答主
回答量:822
采纳率:94%
帮助的人:147万
展开全部

数据 存在 类 的 字段 _name 中。

类的定义包括数据和行为,其中只有字段,也就是变量才是数据,其他的属性、方法都是行为。C#中属性不能保存数据。

问:为什么要用属性,答:为了封装对象,对外部提供安全的访问方式.

至于为什么要封装,这太难回答了(水平不够,逃~~),自己慢慢学习领悟把。

就像为什么要用类,为什么要用接口,为什么要用设计模式,等完全理解这些问题,就理解了面向对象设计的精髓。

在java中没有属性(和C#同等意义的),

java域(field)= C#字段 = 类的成员变量 (class variable) ,

因为我不会java网上查的也不是很懂

属性是.net平台才有的东西,所以不要用java的眼光去理解。

在C#中属性只是一种特殊的函数,它由两个方法get和set组成。

get方法

表示调用这个属性时返回的内容,你也可以改成别的东西,比如常数、多条语句等,只要类型匹配(int),不一定要返回内部的私有字段(private int _name)。

set方法

表示要如何处理使用赋值语句传递的value参数,你可以老老实实按一般写法,

将_name = value,也可以处理参数,例如

if (value > 0) {_name= value * 2;} else {_name = 0;}

还可以不写,这样value值就传不进来

甚至你可以传递到其他的属性的私有字段 _age = value。

你如果不想用属性,也可以分开写get方法和set方法。

class class1
{
    private int _name;
    getname(){ return _name;}
    setname(int value){ _name = value;}
}

或者直接把成员变量公开,直接调用也行,虽然一般不推荐这样做。

class class1
{
    public int name;
}

个人经验见解,如满意,请采纳,谢谢。

推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式