| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 3687 人关注过本帖
标题:被属性和方法高糊涂了,,总觉的它们本质上是一样的,,求解惑
只看楼主 加入收藏
txxb
Rank: 2
等 级:论坛游民
帖 子:104
专家分:59
注 册:2014-10-8
结帖率:96%
收藏
已结贴  问题点数:20 回复次数:6 
被属性和方法高糊涂了,,总觉的它们本质上是一样的,,求解惑
struct xingzhuang
    {
        List<Point> _xing;//这个是字段了
        
        public Point[] xing
        {get { return _xing.ToArray(); }}
        //这个算是只读属性的写法吗?
看来属性的数据类型可以和字段的数据类型不同
        
        public void add(Point p)
        { _xing.Add(p); }
        //修改字段的方法
    }

可不可以理解为带默认参数(value)的方法就是属性???
搜索更多相关主题的帖子: 属性 方法 Point 字段 数据类型 
2017-07-01 15:30
leisiege
Rank: 4
等 级:业余侠客
威 望:8
帖 子:95
专家分:235
注 册:2015-10-22
收藏
得分:0 
不是的。类里面属性和方法是两种东西。元数据是不一样的,一个是property,一个是method。
属性还能用value关键字。属性可以设置为只读。
属性有get和set。方法没有。
虽然说其实也可以理解为两个方法,设置和读取。但是还是不要混为一谈。
一般属性的作用是描述这个类有哪些特点。特点的赋值和读取有那些特征。比如可以加事件,验证之类的。
方法的作用是描述这个类有那些功能。
属性最初的作用是封装类的特征,使得外部不能直接修改类的字段。只能通过属性来赋值。
当然方法也能做到这一点。但是最后各司其职。
2017-07-02 22:15
leisiege
Rank: 4
等 级:业余侠客
威 望:8
帖 子:95
专家分:235
注 册:2015-10-22
收藏
得分:0 
不是的。类里面属性和方法是两种东西。元数据是不一样的,一个是property,一个是method。
属性还能用value关键字。属性可以设置为只读。
属性有get和set。方法没有。
虽然说其实也可以理解为两个方法,设置和读取。但是还是不要混为一谈。
一般属性的作用是描述这个类有哪些特点。特点的赋值和读取有那些特征。比如可以加事件,验证之类的。
方法的作用是描述这个类有那些功能。
属性最初的作用是封装类的特征,使得外部不能直接修改类的字段。只能通过属性来赋值。
当然方法也能做到这一点。但是最后各司其职。
2017-07-02 22:15
txxb
Rank: 2
等 级:论坛游民
帖 子:104
专家分:59
注 册:2014-10-8
收藏
得分:0 
class xingzhuang
    {
        List<Point> _xing;//这个是字段了
        
        public Point xing
        { set { _xing.Add(value); } }
        
        
        public void add(Point p)
        { _xing.Add(p); }
        //这两个,用属性好还是用方法好
2017-07-03 09:04
leisiege
Rank: 4
等 级:业余侠客
威 望:8
帖 子:95
专家分:235
注 册:2015-10-22
收藏
得分:20 
方法。因为他的功能是更改自己的状态。不是设置自己的状态。
而且。_xing.Add(value)这种你不觉得别扭吗?
你的代码看起来会是这样
var x = new xingzhuang();
x.xing = new point();
x.xing = new point();
别人会认为他的属性被设置了两次,其实你的代码不是,你的代码是添加两个point进去。
你的_xing字段竟然是队列。。。。。。你说别人看你的代码会不会搞晕?
这样会被维护你代码的人骂。。。。
2017-07-03 22:06
八画小子
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:贵宾
威 望:37
帖 子:709
专家分:2063
注 册:2010-11-11
收藏
得分:0 
属性和方法在语法层面上是不同的。也可以说在面向对象概念上是两个概念,前者是对象的属性特征,后者是传递消息的接口。但在C#语言底层实现上,两者是同意的,属性的本质就是方法。

2017-07-14 11:46
cxj091
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2017-10-19
收藏
得分:0 
简单一点理解:属性本质就是方法。
属性只为字段服务。
方法为类服务,提供功能。
2017-10-19 11:09
快速回复:被属性和方法高糊涂了,,总觉的它们本质上是一样的,,求解惑
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.016810 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved