Welcome to Software Development on Codidact!
Will you help us build our independent community of developers helping developers? We're small and trying to grow. We welcome questions about all aspects of software development, from design to code to QA and more. Got questions? Got answers? Got code you'd like someone to review? Please join us.
Post History
You're right about the recalculation, as you can see from some easy experimentation by rigging two (dynamic) properties and logging what each one gives you. public long TimeStamp1 { get; } = DateT...
Answer
#2: Post edited
- You're right about the recalculation, as you can see from some easy experimentation by rigging two (dynamic) properties and logging what each one gives you.
- ```csharp
- public long TimeStamp1 { get; } = DateTime.Now.Ticks;
- public long TimeStamp2 => DateTime.Now.Ticks;
- Console.Log(Foo.TimeStamp1);
- Console.Log(Foo.TimeStamp2);
- Thread.Sleep(3000);
- Console.Log(Foo.TimeStamp1);
- Console.Log(Foo.TimeStamp2);
- Thread.Sleep(3000);
- Console.Log(Foo.TimeStamp1);
- Console.Log(Foo.TimeStamp2);
- ```
My personal suspicion is that ReSharper thinks most people *meant* to have dynamic resolution of the property getter. ReSharper would then expect people to be *surprised* to discover that the initial value is never changed. [Alexei notes][alexei] that "if you want to store the initial evaluation result, define a `static readonly` field instead to better convey the meaning (it is not supposed to change)."- [alexei]: https://software.codidact.com/comments/thread/10248#comment-25685
- You're right about the recalculation, as you can see from some easy experimentation by rigging two (dynamic) properties and logging what each one gives you.
- ```csharp
- public long TimeStamp1 { get; } = DateTime.Now.Ticks;
- public long TimeStamp2 => DateTime.Now.Ticks;
- Console.Log(Foo.TimeStamp1);
- Console.Log(Foo.TimeStamp2);
- Thread.Sleep(3000);
- Console.Log(Foo.TimeStamp1);
- Console.Log(Foo.TimeStamp2);
- Thread.Sleep(3000);
- Console.Log(Foo.TimeStamp1);
- Console.Log(Foo.TimeStamp2);
- ```
- My personal suspicion is that Rider thinks most people *meant* to have dynamic resolution of the property getter. Rider would then expect people to be *surprised* to discover that the initial value is never changed. [Alexei notes][alexei] that "if you want to store the initial evaluation result, define a `static readonly` field instead to better convey the meaning (it is not supposed to change)."
- [alexei]: https://software.codidact.com/comments/thread/10248#comment-25685
#1: Initial revision
You're right about the recalculation, as you can see from some easy experimentation by rigging two (dynamic) properties and logging what each one gives you. ```csharp public long TimeStamp1 { get; } = DateTime.Now.Ticks; public long TimeStamp2 => DateTime.Now.Ticks; Console.Log(Foo.TimeStamp1); Console.Log(Foo.TimeStamp2); Thread.Sleep(3000); Console.Log(Foo.TimeStamp1); Console.Log(Foo.TimeStamp2); Thread.Sleep(3000); Console.Log(Foo.TimeStamp1); Console.Log(Foo.TimeStamp2); ``` My personal suspicion is that ReSharper thinks most people *meant* to have dynamic resolution of the property getter. ReSharper would then expect people to be *surprised* to discover that the initial value is never changed. [Alexei notes][alexei] that "if you want to store the initial evaluation result, define a `static readonly` field instead to better convey the meaning (it is not supposed to change)." [alexei]: https://software.codidact.com/comments/thread/10248#comment-25685