属性? 方法?
今天突然遇到的问题:
有这样一个语句:
private void timer1_Tick(object sender, System.EventArgs e)
{
myDTPicker.Value = DateTime.Now; //更新DateTimePicker控件的中的时间值为当前时间;
}
开始我的语句是这样写的:
myDTPicker.Value = DateTime.Now();
编译时出现的错误是:
System.DateTime.Now 是“属性”,此处应为“方法”
其实想想早就遇到这个问题了,每次都是编译出错以后机械的改动。
没有真正的弄懂。
所以,今天请教各位高人:
1。解释一下“属性”和“方法”的不同。
2。“属性”和“方法”都是在什么情况下使用?
谢谢!
问题点数:30、回复次数:17Top
1 楼hedonister(冰戈)回复于 2005-02-03 17:31:50 得分 1
方法 其实就是函数Top
2 楼trnbo(【没有蛀牙】)回复于 2005-02-03 17:33:49 得分 5
对象:
它可以看作为物体,而且分为思维对象(物体)和实在对象(物体)。思维对象指的是我们在大脑中想象或假设出来的物体,它不存在于现实空间中;而实在对象指的是当时真正存在于我们生活空间的物体,它是可见的。例如一本书、一张桌子都可以看作为对象,如果这本书当时是可见的,那么这本书即是实在对象,反之则是思维对象。
对象的属性:
指的是对象本身所具有的特性。对象既然可以看作是物体,那么这个物体本身所具有的颜色、形状、大小、名称、位置等,都可以看作是这个对象的属性。对象的属性有的是可以改变的,有的是不能改变的(只读属性)。比如说,我把一本书从桌子上扔到地上,那么这本书的位置属性就发生了改变,但是,制作这本书的原料和书的内容却是不可以改变的(只读属性)。
对象的方法:
它可以看作是对象所做的动作,它可以返回结果(功能函数),也可以不返回结果(过程)。例如打开一本书,结果书打开了,返回的结果为真(True);若这本书带有密码锁,但是我们没有密码,再去做“打开书”这个动作,结果便是失败,返回假(False)。当然,还有不想返回结果的动作,比如说一位朋友想通过你去约你的同事吃饭,然后你去传达了这件事情,所以“传达”这个动作你已经做了,但是具体他(你的同事)是否应邀,那就与你无关了,因此你不会想得到这个结果。
Top
3 楼jackie615()回复于 2005-02-03 17:34:29 得分 2
一个正方形 , 它的长 宽 就是属性
得到它的面积的函数是一个方法....Top
4 楼LoveCherry(论成败,人生豪迈;大不了,重头再来!^_^)回复于 2005-02-03 17:34:31 得分 2
人是一个类
你是对象(人实例化以后)
人的钱多少就是属性
人购买东西花钱就是方法Top
5 楼FJGoodGood(_FJ_强中强)回复于 2005-02-03 17:36:13 得分 3
属性是具有变量的外形、方法的内涵,对属性的读取,内部会映射到这个属性的 getter 和 setter 两个方法。Top
6 楼FJGoodGood(_FJ_强中强)回复于 2005-02-03 17:36:47 得分 0
属性是具有变量的外形、具有方法的内涵,对属性的读取和写入,内部会映射到这个属性的 getter 和 setter 两个方法。Top
7 楼Samen168(Code to coding)回复于 2005-02-03 17:41:59 得分 1
回复人: LoveCherry(最讨厌你们这些要代码的了,一点技术含量都没有) ( ) 信誉:100 2005-02-03 17:34:00 得分: 0
人是一个类
你是对象(人实例化以后)
人的钱多少就是属性
人购买东西花钱就是方法
很形象Top
8 楼vividboy(参数1,参数2..)回复于 2005-02-03 17:45:50 得分 0
thanks!
那我们就事论事,
请各位对我给出的代码为什么用属性而不用方法的原因解释一下。
Top
9 楼vividboy(参数1,参数2..)回复于 2005-02-03 22:15:50 得分 0
up!
有人知道吗?Top
10 楼sutalon(神州无敌)回复于 2005-02-03 23:36:05 得分 2
属性的功能:对私有字段(数据抽象)进行操作,包括:得到(get{})和设置(set{});
方法的功能:对业务逻辑的高层抽象。
不过,有时候,用属性和方法都可以实现相同的功能。
如你的代码所示:
myDTPicker.Value = DateTime.Now;
其中的 DateTime.Now 是一个属性,因为DateTime.Now的功能是为了得到当前的时间值,
而它没有经过逻辑计算才得到时间的。
若在 java 中,因为要取得一个属性的值,一般都是通过:
public DateTime GetTime(){} 方法来取得的,
可能你是受 java 的影响太深,短期内还不能改变过来。Top
11 楼johnczy(JohnChen)回复于 2005-02-04 05:06:23 得分 2
myDTPicker.Value = DateTime.Now();
编译时出现的错误是:
System.DateTime.Now 是“属性”,此处应为“方法”
This is a bad translation. The English version is:
Error 1 'System.DateTime.Now' is a 'property' but is used like a 'method'Top
12 楼FJGoodGood(_FJ_强中强)回复于 2005-02-04 08:43:05 得分 1
人家就是把 Now 定义成属性,你却非要把它当 方法用,当然语法出错了!Top
13 楼liduke(天下有雪)回复于 2005-02-04 11:01:57 得分 4
属性是主要是对外接口用的,来防止外面读取你的内部成员信息,你可以控制
方法就是函数,是对一个功能的处理,当然有时属性可以用方法来进行处理。这只是逻辑上的区别
你打点选择时,可以看到方法和属性的图标不同啊Top
14 楼Ivony(授人以鱼不如授人以渔,上海谋生)回复于 2005-02-04 11:10:16 得分 4
thanks!
那我们就事论事,
请各位对我给出的代码为什么用属性而不用方法的原因解释一下。
===============================================================
因为DateTime.Now是一个仅与当前时间有关而与程序无关的数值,使用属性更容易理解。十分明确,Now,Now对于程序而言是“常量”,即不受程序影响的东西。
而GetTime会造成n多歧义,这到底是得到这个DateTime对象里面的时间信息抛弃日期信息,还是得到当前的时间,还是得到某个事件的时间,还是。。。。。Top
15 楼zhzuo(秋枫)回复于 2005-02-04 12:39:19 得分 3
属性在类内部看来更像方法,在类外部看来就像字段,
最大的特色就是有参属性(索引器),在C#中编译是属性是内联的,而方法没有。
属性针对一个变量来说,而方法就不是这样.
体现面向对象的特性,共有字段应该包装成属性.
另外熟性可以控制只读,只写或读写.
Top
16 楼vividboy(参数1,参数2..)回复于 2005-02-07 14:39:52 得分 0
谢谢大家的帮助!
长了见识!
同时祝各位新年快乐!^_^Top
17 楼tangwei168()回复于 2005-02-07 14:47:03 得分 0
now是属性.不是通过方法获得.方法即函数.你可以把属性理解为名词,把方法理解为动词.平常取名字的时候都是按照这个规律的,即方法取动词,属性取名字.Top




