请问有时 在类里面 属性和一个公用的方法可以实现相同的功能,例如
public int width
{get{return Fun();}}
public int GetWidth
{.............}
请问这两个哪个好?为什么?属性是一直在执行Get吗?还是和方法一样,只有访问的时候才Get.
谢谢!
两者不一样,一般属性生成的那个get方法,加载时会被内联到属性调用的方法里。具体参考C#语言规范第10章第7节第2小节,里面讲到了内联 (inlining)。
get 更好,只有访问属性是才会调用。
要知道C#是从C++演化而来的,微软为C#增加属性方法绝不是心血来潮,一定会有他的理由。
我的理解是,这两种方法本质上是一样的,透过编译器,最终都是一个类的方法,差别仅仅是方法名不一样(方法命名方法不一样)。
但是get方法使用起来更自然,更符合人(程序员)的自然表达,个人认为这是所有编程语言的努力方向,甚至可以用这点来评判一门编程语言的未来发展。
本质是一样的,使用起来比用方法更方便,用方法,你要写两个,一个get,一个set,用属性一个名字就可以,使用也直观。
public int GetWidth
{.............} 你这个方法杂没参数?
属性一般表示一个对象的状态,而方法表示一个对象可以执行的动作。通过这个就思路就可以,决定什么时候用属性什么时候用方法了。