Asia

C# 9 Static Anonymous Function

25 May 2021

Very important improvement in C# 9 which allows a ‘static’ modifier on lambdas and anonymous methods, which disallows capture of locals or instance state from containing scopes.

The whole motive behind this is to avoid unintentionally capturing state from the enclosing context, which can result in unexpected retention of captured objects or unexpected additional allocations.

C# 9 Static Anonymous Function

This case can be fixed by adding the modifier static on the lambda and use const modifier on the variable you don’t want to be captured, in that way any enclosing context will be captured there:

C# 9 Static Anonymous Function

An anonymous method may have a static modifier. The static modifier shows that the lambda or anonymous method is a static anonymous function. It cannot capture the state from the enclosing scope. As a result, locals, parameters, and this from the enclosing scope are not available within the same. Also, it cannot reference the instance members from an implicit or explicit this or base reference. This function may reference static members from the enclosing scope. It may reference constant definitions from the enclosing scope. The function nameof() in a static anonymous function may reference locals, parameters, or this or base from the enclosing scope. No guarantee is made as to whether a static anonymous function definition is emitted as a static method in the metadata. Then all this is left up to the compiler implementation to optimize. A non-static local function or anonymous function can capture state from an enclosing static anonymous function but cannot capture state outside the enclosing static anonymous function. Removing the static modifier from the function in a valid program does not affect the logic of the program. a ‘static’ modifier on lambdas and anonymous methods, which disallows capture of locals or instance state from containing scopes.

The whole motive behind this is to avoid unintentionally capturing state from the enclosing context, which can result in unexpected retention of captured objects or unexpected additional allocations.

C# 9 Static Anonymous Function

This case can be fixed by adding the modifier static on the lambda and use const modifier on the variable you don’t want to be captured, in that way any enclosing context will be captured there:

C# 9 Static Anonymous Function

An anonymous method may have a static modifier. The static modifier shows that the lambda or anonymous method is a static anonymous function. It cannot capture the state from the enclosing scope. As a result, locals, parameters, and this from the enclosing scope are not available within the same. Also, it cannot reference the instance members from an implicit or explicit this or base reference. This function may reference static members from the enclosing scope. It may reference constant definitions from the enclosing scope. The function nameof() in a static anonymous function may reference locals, parameters, or this or base from the enclosing scope. No guarantee is made as to whether a static anonymous function definition is emitted as a static method in the metadata. Then all this is left up to the compiler implementation to optimize. A non-static local function or anonymous function can capture state from an enclosing static anonymous function but cannot capture state outside the enclosing static anonymous function. Removing the static modifier from the function in a valid program does not affect the logic of the program.

Tudip Technologies

Tudip Technologies is a value-driven Software Services company. We deliver excellence in dedicated and business-centric web solutions incorporated with innovation and expertise as the tools to achieve business goals. Our high-quality, cost-effective, reliable, and scalable services have helped us build an enduring relationship with our clients and customers.

Latest Posts

  • All Posts
  • Casestudy
  • Cloud
  • Healthcare
  • Ios
  • IOT
  • Java
  • Manufacturing
  • News
  • OTT
  • Supply Chain
  • Support and Maintainance
    •   Back
    • Banking
Cloud-Powered Agility

December 27, 2024

27 December 2024 Introduction: Transforming Chaos into Opportunity Imagine a supply chain where disruptions are predicted before they occur, inventory…

Cloud-Powered Agility

December 24, 2024

Imagine a supply chain where disruptions are predicted before they occur, inventory is optimized in real-time, and every stakeholder works…

Related Posts

  • All Posts
  • Healthcare