【发布时间】:2015-08-11 17:42:34
【问题描述】:
我有一个类似这样的属性:
DateTime MinDate
{
get { return new DateTime(2005, 3, 25); }
}
我担心每次调用Derived.MinDate 都会构造一个新的DateTime,所以我希望有一个只构造一次的底层_MinDate。
private readonly DateTime _MinDate = new DateTime(2005, 3, 25);
DateTime MinDate
{
get { return _MinDate; }
}
但这是否有任何影响,因为DateTime 无论如何都是一个结构? 场景 1: MinDate 构造一个新的 DateTime,然后将其复制给调用者。 场景二:_MinDate被复制到MinDate,被复制到调用者。这两种情况同样低效,对吧?
【问题讨论】:
-
您是否希望制造数百万个这样的对象?
-
不,第二个例子效率更高,因为 JIT 会内联属性 getter,从而消除第二个复制操作。
标签: c# caching struct value-type