首页 新闻 会员 周边

c# 属性与方法原理

0
[已解决问题] 解决于 2012-02-04 10:18

请问有时  在类里面  属性和一个公用的方法可以实现相同的功能,例如

public int width

{get{return Fun();}}

public int GetWidth

{.............}

 

请问这两个哪个好?为什么?属性是一直在执行Get吗?还是和方法一样,只有访问的时候才Get.

谢谢!

L4的主页 L4 | 初学一级 | 园豆:0
提问于:2011-12-19 09:41
< >
分享
最佳答案
0

两者不一样,一般属性生成的那个get方法,加载时会被内联到属性调用的方法里。具体参考C#语言规范第10章第7节第2小节,里面讲到了内联 (inlining)。

水牛刀刀 | 大侠五级 |园豆:6350 | 2011-12-19 10:24
其他回答(4)
0

get 更好,只有访问属性是才会调用。

要知道C#是从C++演化而来的,微软为C#增加属性方法绝不是心血来潮,一定会有他的理由。

我的理解是,这两种方法本质上是一样的,透过编译器,最终都是一个类的方法,差别仅仅是方法名不一样(方法命名方法不一样)。

但是get方法使用起来更自然,更符合人(程序员)的自然表达,个人认为这是所有编程语言的努力方向,甚至可以用这点来评判一门编程语言的未来发展。

胡屯 | 园豆:714 (小虾三级) | 2011-12-19 09:59
0

本质是一样的,使用起来比用方法更方便,用方法,你要写两个,一个get,一个set,用属性一个名字就可以,使用也直观。

OOLi | 园豆:163 (初学一级) | 2011-12-19 10:11
0

public int GetWidth

{.............}  你这个方法杂没参数?

Anleb | 园豆:208 (菜鸟二级) | 2011-12-19 16:08
0

属性一般表示一个对象的状态,而方法表示一个对象可以执行的动作。通过这个就思路就可以,决定什么时候用属性什么时候用方法了。

农民工老李 | 园豆:423 (菜鸟二级) | 2011-12-23 14:44
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册