در C# 8.0 امکان تعریف متدهای محلی static نیز اضافه شدهاست:
namespace Sample { class StaticLocalFunctions { static void Main() { ClassicCapture(); // Implicitly captured variables in the method scope NonCapturing(); // Now we can explicitly prevent that } internal static int ClassicCapture() { int y; LocalFunction(); return y; void LocalFunction() => y = 19; } internal static int NonCapturing() { int y = 5, x = 7; return Add(x, y); static int Add(int left, int right) => left + right; } } }
اما اگر فکر میکنید که این نوع تغییرات نباید داخل متدهای محلی مجاز باشند، اکنون در C# 8.0 میتوانید آنها را استاتیک تعریف کنید تا دسترسی آنها به متغیرهای متد دربرگیرندهی آنها، قطع شود؛ مانند متد استاتیک Add داخل متد NonCapturing که دیگر نمیتواند به صورت مستقیم، به متغیرهای x و y دسترسی پیدا کند.