본문 바로가기

카테고리40

C# Linq 지연평가 호출 순서는 2 -> 3-> 1 Linq는 for문이 아니다! 이렇게 사용했을때, itemList 의 실제 데이터는 모두 지워진 상태에서 Linq 쿼리식이 호출됨. 실제로 쿼리의 결과를 이용하여 순회를 수행할 때 결과가 생성. 이때는 ToList() 때문에 1->2->3 순서로 호출됨. 참고 링크 https://week-year.tistory.com/87 [Effective C# Item 37] 쿼리를 사용할 때는 즉시 평가보다 지연 평가가 낫다 쿼리를 정의한다고 해서 결과 데이터나 시퀀스를 즉각적으로 얻어오는 것이 아니다. 실제로는 쿼리를 정의하는 작업은 수행 시에 어떤 과정으로 작업을 수행할지에 대한 절차만을 정의한 것에 week-year.tistory.com 2023. 4. 14.
[전문가를 위한 C++] 11장 11.1.6 레퍼런스와 포인터의 선택 기준 결론 : 포인터보다 레퍼런스를 사용하는 것이 좋다. 레퍼런스를 사용할 수 없을 때만 포인터를 사용한다. 레퍼런스를 사용했을때의 장점. 1. 코드를 깔끔하고 읽기 쉽게 작성 할 수 있다. 2. 포인터보다 훨씬 안전하다. - 레퍼런스의 값은 null이 될 수 없고, 레퍼런스를 명시적으로 역참조 할 수도 없다. - 그래서 포인터처럼 역참조 과정에서 에러가 발생할 가능성도 없다.(단, 포인터가 하나도 사용되지 않았을때만) 3. 레퍼런스를 초기화한 뒤에는 그 레퍼런스가 가리키는 객체를 변경할 수 없다. 포인터를 사용한 코드는 거의 대부분 레퍼런스로 표현할 수 있다. 심지어 객체에 대한 레퍼런스는 객체에 대한 포인터처럼 다형성도 지원한다. 하지만 반드시 포인터를 사용해야 하는 경우도 있다. 포인터를 사용해야 하는 .. 2023. 4. 9.
C#의 Pass by reference, ref 키워드 출처 : https://mathmakeworld.tistory.com/89 C#의 Pass by reference와 ref, out, in 키워드 저번 포스팅에서는 C#의 Pass by value에 대해 알아보았습니다. 짧은 예제를 통해 value type의 변수와 reference type의 변수를 parameter로 보냈을 때의 동작을 알아보았죠. 그리고 value type과 reference type의 mathmakeworld.tistory.com 출처 : https://blockdmask.tistory.com/605 [C#] ref 매개변수 한정자 설명 및 에제 (ref 키워드) 안녕하세요. BlockDMask입니다. 오늘은 C#에서 매개변수를 넘길 때 붙여줄 수 있는 한정자 중에 ref라는 키워.. 2023. 4. 4.
C# 람다와 클로저 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); .. 2023. 4. 3.
맨날 헷갈리는 volatile과 std::atomic 프로그래머들은 종종 volatile 과 std::atomic 을 혼동한다. 그러나 이 두 개는 서로 전혀 다른 역할을 한다. std::atomic 은 원자성을 보존해주기 위해서 사용된다. 다시 말하자면 mutex 없이도 두 개의 스레드가 동시에 접근해도 data race 문제가 발생하지 않는다. volatile 은 컴파일러가 최적화하며 특정 라인을 수행하지 않는 경우가 없도록 해준다. 코드로 살펴보자. volatile int vi(0); ++vi; --vi; std::cout 2022. 11. 7.
액터 모델 (Actor Model) https://syntaxsugar.tistory.com/entry/Actor%EC%95%A1%ED%84%B0 2022. 11. 1.