1) DateTime.Now
возвращает новый экземпляр DateTime
.
2) DateTime.Subtract
возвращает новый экземпляр TimeSpan
.
3) DateTime
- это структура, которая занимает память в стеке.
4) Когда метод завершается (возвращается), его стековая память восстанавливается.
Следовательно, сохраняет ли следующий код память (при условии, что метод StartTiming
находится в том же классе, который содержит Main)?
Код 1:
static Main(){
bool started = true;
static TimeSpan totalTime = TimeSpan.Zero;
static DateTime startTime = DateTime.Now;
while(started){
// my assumption: every time the method is called, the same memory
// in the stack will be reused
StartTiming();
}
}
void StartTiming(){
totalTime = DateTime.Now.Subtract(startTime);
}
по сравнению со следующим кодом
Код 2:
</p>
<pre><code>static Main(){
bool started = true;
TimeSpan totalTime = TimeSpan.Zero;
DateTime startTime = DateTime.Now;
while(started){
// my assumption: every time this stmt is executed DateTime.Now
// creates a new DateTime instance and Subtract creates a timespan instance
totalTime = DateTime.Now.Subtract(startTime);
}
}