এটি খুব সম্ভবত কারণ কোনও বন্ধকরণ নেই, উদাহরণস্বরূপ:
int age = 25;
Action<string> withClosure = s => Console.WriteLine("My name is {0} and I am {1} years old", s, age);
Action<string> withoutClosure = s => Console.WriteLine("My name is {0}", s);
Console.WriteLine(withClosure.Method.IsStatic);
Console.WriteLine(withoutClosure.Method.IsStatic);
এই ইচ্ছার আউটপুট false
জন্য withClosure
এবং true
জন্যwithoutClosure
।
আপনি যখন ল্যাম্বডা এক্সপ্রেশন ব্যবহার করেন, কম্পাইলারটি আপনার পদ্ধতিটি ধারণ করতে একটি সামান্য শ্রেণি তৈরি করে, এটি নিম্নলিখিতগুলির মতো এমন কিছু সংকলন করে (প্রকৃত বাস্তবায়ন সম্ভবত সামান্য পরিবর্তিত হয়):
private class <Main>b__0
{
public int age;
public void withClosure(string s)
{
Console.WriteLine("My name is {0} and I am {1} years old", s, age)
}
}
private static class <Main>b__1
{
public static void withoutClosure(string s)
{
Console.WriteLine("My name is {0}", s)
}
}
public static void Main()
{
var b__0 = new <Main>b__0();
b__0.age = 25;
Action<string> withClosure = b__0.withClosure;
Action<string> withoutClosure = <Main>b__1.withoutClosure;
Console.WriteLine(withClosure.Method.IsStatic);
Console.WriteLine(withoutClosure.Method.IsStatic);
}
ফলস্বরূপ Action<string>
দৃষ্টান্তগুলি প্রকৃতপক্ষে এই উত্পন্ন ক্লাসগুলির পদ্ধতিগুলির দিকে নির্দেশ করতে পারে।
static
পদ্ধতিগুলির জন্য নিখুঁত প্রার্থী ।