在 C# 中,当您拥有属性时:
public class Person
{
public int AnIntegerValue
{
get
{
//Some logic
return somevalue;
}
}
}
当你从数据库中获取一个人时:
var mike = Uow.GetPerson("Mike");
是立即评估 AnIntegerValue 还是代码等待:
mike.AnIntegerValue
我想知道,因为如果您将大量逻辑放入属性中并且它是预加载的,这显然会影响性能。
最佳答案
不会立即评估属性。它们在访问“get”修饰符时被评估。
解释:
归根结底,函数和属性之间没有真正的区别。
含义:
public int AnIntegerValue
{
get
{
//Some logic
return somevalue;
}
}
相当于:
Public int get_AnIntegerValue()
{
//Some logic
return somevalue;
}
事实上,这正是您的属性被编译成的目标(如果您在调试时跟踪堆栈,您可以看到这一点)。
因此,与不立即评估功能的方式一样,属性也是如此,您可以使用它们而不必担心额外的性价比问题。
可以看看this有关何时使用属性以及何时使用函数是更好、更优雅的方法的一些指南。
关于c# - 用户定义的属性是延迟加载还是急切加载,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17518967/