본문 바로가기

개발/C#2

C++의 lambda와 C#의 delegate의 차이 C++에서는 lambda를 이용해 익명 메서드를 구현 할 수 있고 C#에서는 delegate를 이용해 익명 메서드를 구현 할 수 있다.- lambda로 구현된 익명 메서드(C++)는 컴파일 시 해당 메서드가 인라인화되어 해당 코드로 치환된다. (함수 호출 시 소모되는 비용을 절약할 수 있게됨)- delegate로 구현된 익명 메서드(C#)는 컴파일 시 중복되지 않을 특별한 문자열의 이름을 가지는 메서드가 생성 되어 해당 메서드를 호출 하는 식으로 코드가 치환된다. 따라서 delegate로 구현된 익명 메서드는 간편 표기 구문에 불과하며 성능상 이점은 없어 보인다. 2018. 2. 21.
Boxing UnBoxing 대부분 언어에서 변수는 참조 변수와 값 변수가 존재한다.C#에서도 이 두 종류의 변수가 있는데 이들간 서로 전환하는 방법을 Boxing / UnBoxing 이라고 한다. Boxing : 값 변수를 참조 변수로 변환하는 기법UnBoxing : 참조 변수를 값 변수로 변환하는 기법 1. Boxing 과정 1) 값 변수를 객체화 하기 위한 메모리(Box)를 힙 영역에 생성한다. 2) 값 변수의 값을 힙 영역에 생성한 Box로 복사한다. 3) 참조 변수가 박스를 가리키도록(참조하도록) 한다. 2. UnBoxing 과정 1) 해당 객체가 지정한 값타입을 Boxing한 값인지 확인한다. 2) 객체의 값을 값타입 변수에 복사한다. int p = 100;object o = p; //Boxingif(o is int) /.. 2015. 10. 6.