一旦将属性容器类加载/实例化到内存中,属性getter是否会被评估?

Emr*_*ain 0 c# properties

我有一个简单的问题.我设计了一个C#类,我有一些属性getter负责执行一些性能昂贵的任务.我班上有很多这样的房产.我的问题是,只要将类的实例加载到内存中,就会评估那些属性getter吗?如果是这样,那么,我会考虑将它们分解为方法.我希望他们只在第一次使用该属性时进行评估,但我需要确定这个假设.

我知道我应该使用方法来处理昂贵的任务,但我发现使用Properties更易于维护,因为我在一个类中有很多成员.

谢谢.

Dan*_*ite 5

属性getter/setter将针对它们的每次调用进行评估.它们只不过是方法的句法.

public class Foo
{
   private int actual = 0;
   public int Bar
   {
      get { return actual++; }
      set { value = actual; value++ }
   }
}

int v = foo.Bar; //0
v = foo.Bar; // 1
v = foo.Bar; // 2
foo.Bar = v; // actual = 3
Run Code Online (Sandbox Code Playgroud)