私のユーティリティのいずれかで、先日、ReSharperのは、デリゲートThreadStart
を定義することラムダを述べる以下のコードの一部について私を示唆したローカル関数に変換することができます:C#7ローカル関数のlambdaに対するメリットは何ですか?
public void Start(ThreadPriority threadPriority = ThreadPriority.Lowest)
{
if (!Enabled)
{
_threadCancellationRequested = false;
ThreadStart threadStart =() => NotificationTimer (ref _interval, ref _ignoreDurationThreshold, ref _threadCancellationRequested);
Thread = new Thread(threadStart) {Priority = ThreadPriority.Lowest};
Thread.Start();
}
}
ので、
public void Start(ThreadPriority threadPriority = ThreadPriority.Lowest)
{
if (!Enabled)
{
_threadCancellationRequested = false;
void ThreadStart() => NotificationTimer(ref _interval, ref _ignoreDurationThreshold, ref _threadCancellationRequested);
Thread = new Thread(ThreadStart) {Priority = ThreadPriority.Lowest};
Thread.Start();
}
}
前者に比べて後者のメリットは何ですか?パフォーマンスについてのみですか?
Iすでに下のリソースをチェックしましたが、私の例ではメリットがその明白ではありません。
- https://asizikov.github.io/2016/04/15/thoughts-on-local-functions/
- https://www.infoworld.com/article/3182416/application-development/c-7-in-depth-exploring-local-functions.html
私は近いと言うでしょう。しかし、それは本当に興味深い質問です。 :-) –
ローカル関数はlambdaを使って1行で再帰をサポートしていますが、これを行うにはちょっとトリックする必要があります。また、クロージャをキャプチャするときにlambdasのようにガベージを作成しません。 –
@AlKeppこれは**の意見ではなく、地方の機能のメリットについての質問です。 OPがあなたの好きなことを聞いていたら質問は意見に基づいています。明らかにそれはしません。 –