gpt4 book ai didi

c# - 用户定义的属性是延迟加载还是急切加载

转载 作者:太空宇宙 更新时间:2023-11-03 21:45:01 24 4
gpt4 key购买 nike

在 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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com