属性与方法的区别

Asi*_*jad 12 c# methods properties

例如,当它返回值时哪一个更好用

public int EmployeeAge
{
    get{return intEmployeeAge};
}
Run Code Online (Sandbox Code Playgroud)

public int EmployeeAge()
{
    return intEmployeeAge;
}
Run Code Online (Sandbox Code Playgroud)

哪一个更好,为什么?当我们有像上面这样的secnario时,最好的编程习惯是什么?

Mar*_*ell 31

属性是表达对象特征的有用方式,允许以通用方式获取/设置,可以由API使用,如数据绑定,反射和序列化.因此,对于对象的简单,属性很方便.属性不能带参数,不应该有明显的副作用*,并且应该快速且可重复地返回.此外,不存在"扩展属性"(镜像扩展方法)或通用属性.

(*=延迟加载等并不少见)

方法(C#没有函数)更好地表达要么改变状态,要么期望花费一些时间而不一定是可再现的东西.它们不倾向于在绑定/序列化等方面工作.

请注意,属性实际上只是编写方法的一种特殊方式.几乎没有功能差异.这完全是关于表达意图.你的一件事希望暴露,但是,是字段(实际的intEmployeeAge实例变量).

所以我会:

public int EmployeeAge { get{return intEmployeeAge}; }
Run Code Online (Sandbox Code Playgroud)

或只是(如果在Employee对象上):

public int Age { get{return intEmployeeAge}; }
Run Code Online (Sandbox Code Playgroud)

当然......然后问题变成"在什么单位?" 我认为那是几年?

  • @Ben你是对的.而`get` /`set`**是**方法.在幕后,实际上是`get_Age`和`get_EmployeeAge` (2认同)

Ode*_*ded 6

如果您只需返回一个值,请使用属性.

如果在返回值之前需要执行某些操作,请使用函数.


Mor*_*son 5

属性保存对象数据

函数定义对象行为

查看 ->属性使用指南