본문 바로가기
개발 🛠💻/.NET Framework C#

C# 람다와 클로저

by 승지 T-Story 2023. 4. 3.
    class Member
    {
      public int b;
    }
    class MemberWrapper
    {
      public Member m = new Member();
      public int a;
    }

    class ExampleClass
    {
      public Action lambda;

      public ExampleClass(MemberWrapper wrapper)
      {
        var tempForCopy = wrapper;

        tempForCopy.a = 10;
        lambda = () => Func(tempForCopy);

        tempForCopy.a = 100;
      }

      public void RunLambda()
      {
        lambda();
      }

      public static void Func(MemberWrapper w)
      {
        Console.WriteLine(w.a);
        Console.WriteLine(w.m.b);
      }
    }


    static void Main(string[] args)
    {
      var wrapper = new MemberWrapper();
      var instance = new ExampleClass(wrapper);

      wrapper.m = null;

      instance.RunLambda();

      return;
    }

 

 

결과 : 
콘솔에 100 출력후

null 참조.

'개발 🛠💻 > .NET Framework C#' 카테고리의 다른 글

C# 메모  (0) 2023.05.09
C# Linq 지연평가  (0) 2023.04.14
C#의 Pass by reference, ref 키워드  (0) 2023.04.04

댓글