면접 망상

기술 면접 질의 응답 1~13 및 추가 질문 1~4

배동건 2024. 3. 12. 11:25

1. float 와 int 의 표현 가능한 수의 범위가 다른 이유는 무엇인가?

 

- 답

수를 표현하는 방식이 다르기 때문입니다.

int형의 경우, 부호 표현 및 이진수로 표현된 수를 나타내는 4바이트의 값을 가집니다

float형의 경우, 같은 4바이트지만, 부호를 표현하는 sign bit, 자릿수를 표현하는 exponent bit, 값을 표현하는 mantissa bit 로 구분되어 표현됩니다.

 

 

참고 ) https://indrawer.tistory.com/48

 

float형과 int형, 뭐가 다를까?

코딩을 하다 보면 int형을 많이 사용하다가 소수점 연산에 있어서 float이나 double형을 사용하는 경우가 있다. int형의 경우 소수점 연산을 하면 값에 오차가 커지기 때문에 float형을 사용한다......(?

indrawer.tistory.com

 

2. ref와 out 의 사용 시 차이는 무엇인가?

 

- 답

ref의 매개 변수는 사용하기 전에 초기화 되지만, out의 매개 변수는 이를 전달하기 전에 명시적으로 초기화할 필요가 없고 이전의 값은 모두 무시한다는 차이가 있습니다.

변수에 ref 키워드를 적용하면, 호출되는 메서드에 변수에 대한 참조 자체가 전달되며, 메서드가 실행되는 동안, 변경 내용이 저장되게 됩니다. 그렇기에 메서드에서 추가적으로 연산을 한 이후, 넘겨주는 용도로 많이 사용됩니다.

out 의 경우, ref와 유사하게 메서드에 참조를 전달하지만, 초기값을 무시하므로, 메서드 내부적으로 처리한 값을 다른 곳에서 사용해야 할 때 주로 사용합니다.

 

 

특히 ref의 경우 Mathf.SmoothDamp / Lerp / Moveto 같은 함수에서 많이 사용하고, out의 경우, Paycasthit에서 hit한 물체의 정보를 반환하는 장소 등에 많이 사용됩니다.

 

 

참고 ) https://codingcoding.tistory.com/56

 

C# ref, out 두 한정자의 차이점, 매개변수 사용법 차이

C# ref, out - 두 한정자의 차이점 참조로 전달 Java와 C# 모두에서 개체를 참조하는 메서드 『매개 변수는 항상 참조로 전달』되는 반면 기본 데이터 형식 매개 변수(C#의 값 형식)는 값으로 전달됩니

codingcoding.tistory.com

 

건오님 질의응답

ref는 값을 넘겼을 때 추가적으로 연산을 해서 넘겨주는 용도로 많이 사용되며 주로 Mathf.SmoothDamp / Lerp / Moveto 같은 함수에 많이 사용됩니다.
out은 초기 설정과 상관없이 함수 내부적으로 처리한 값을 다른 곳에서 사용해야 할 때 사용하며 주로 Raycasthit에서 hit한 물체의 정보를 반환하는 (데이터 형식) 곳에 사용됩니다.
공통점으로 두 키워드 모두 참조(주소) 형태로 전달하기에 잘 사용하면 메모리를 절약할 수 있습니다.

 

 

3. 접근제한자란 무엇이며, 각각 어떤 차이가 있는지 비교해서 설명하라

 

- 답

외부로부터 타입과 그 타입의 멤버들로의 접근을 제한하여 무분별한 수정을 방지하여 보안을 강화하기 위해 사용되며, private, public, protected, internal, protected internal로 5가지가 존재합니다

가장 많이 쓰이는 접근제한자는 private, protected, public이며, 각각 타입 내부에서만 사용, 타입 외부에서는 접근할 수 없지만 타입 내부 또는 상속받은 경우 사용 가능, 어디에서나 사용 하다는 특징이 있습니다.

 

 

참고 ) https://developer-talk.tistory.com/457

 

[C#]접근 제한자(Access Modifier) - public, private, protected

접근 제한자(Access Modifier) C#의 접근 제한자(Access Modifier)는 접근 한정자라고 불리기도 하며, 타입(Class 및 Interface)의 범위뿐만 아니라 멤버(변수, 필드 및 메서드)의 접근 범위를 정의하는데 사용

developer-talk.tistory.com

 

 

4. struct와 class 를 비교해서 설명하라

 

 - 답

구조체 형식은 class와 유사하게 데이터와 관련 기능을 캡슐화 할 수 있는 값 형식입니다

대표적으로 struct의 경우, 값 형식으로 스택의 영역에 할당되어 저장되기에 바로 사용 가능하지만, class의 경우, 참조 형식으로 힙에 할당하는 값의 주소를 가지게 되므로, new 키워드를 통해 주소값을 참조하여 사용해야 합니다

그 외에도, 구조체의 경우, 상속이 불가능하지만, class 의 경우 상속이 가능합니다

 

 

참고 ) https://velog.io/@livelyjuseok/C-Struct%EC%99%80-Class%EC%9D%98-%EC%B0%A8%EC%9D%B4.-%EA%B7%B8%EB%A6%AC%EA%B3%A0-%EC%99%9C-%EC%82%AC%EC%9A%A9%ED%95%A0%EA%B9%8C

 

C# Struct와 Class의 차이. 그리고 왜 사용할까?

기존 C언어에서는 Class라는 구분이 없이 Struct를 사용했다고 한다. 그렇기에 기존 C와 호환을 위해 Stuct를 사용한다.하지만 단순히 이러한 이유가 아닌 메모리 관리에 용이하다는 부분에서 계속

velog.io

 

 

5. 가비지 컬렉터에 대해 설명하라

 

 - 답

메모리의 관리 방법 중에 하나입니다.

프로그래머가 메모리를 할당한 후 해제를 안 하여 생기는 버그를 해결하기 위해 가비지 컬렉션이라는 시스템이 내장되었습니다.

가비지 컬렉션은 시스템에서 더 이상 사용하지 않는 동적 할당된 메모리 블럭을 찾아 자동으로 다시 사용 가능한 자원으로 회수하는데 이 과정에서 회수해야하는 자원을 모으는 역할을 수행하는 부분을 가비지 컬렉터라고 합니다

이런 가비지 컬렉터는 메모리 할당 / 사용 중인 메모리 인식 / 사용하지 않는 메모리 인식 와 같은 역할을 수행합니다

 

참고 ) https://blog.metafor.kr/163

 

가비지 컬렉션, 컬렉터(Garbage Collection)란?

Garbage Collection, 줄여서 약어로 GC라고도 부른다. 영어로 그대로 읽어서 가비지 컬렉션이라고 부른다. 메모리 관리 방법 중에 하나로, 시스템에서 더이상 사용하지 않는 동적 할당된 메로리 블럭

blog.metafor.kr

 

6. 가비지 컬렉터를 회피하기 위한 전략은 무엇이 있나

 

 - 답

메모리 할당 최소화, 가비지 컬렉션 메소드 직접 호출 피하기, IDisposable 인터페이스 사용, 소멸자 사용 최소화, 값 타입 사용 등의 방법으로 가비지 컬렉터로 인한 성능 저하 문제를 회피할 수 있습니다.

 

 

참고 ) https://velog.io/@berylstar/231031-%EA%B0%80%EB%B9%84%EC%A7%80-%EC%BB%AC%EB%A0%89%ED%84%B0-%ED%9A%8C%ED%94%BC-%EC%A0%84%EB%9E%B5

 

가비지 컬렉터 회피 전략

가비지 컬렉터를 회피하기 위한 전략은 무엇이 있나요 ?가비지 컬렉터는 메모리를 자동으로 관리해주지만, 성능저하가 발생할 가능성이 있기 때문에 가비지 컬렉션을 회피하는 전략이 필요할

velog.io

 

추가 질문 1. 객체 지향 프로그래밍과 절차 지향 프로그래밍이란

 

 - 답

객체 지향 프로그래밍이란 프로그래밍에 필요한 데이터를 추상화시켜 상태와 행위를 가진 객체로 만든 후, 객체들 간의 상호작용을 통해 로직을 구성하는 방식입니다

c++, c#, java 등에서 해당 방식을 사용합니다

유지 보수가 간단하며, 코드 재사용성이 용이한 장점과 처리 속도가 상대적으로 느리고, 객체가 많으면 용량이 커질 수 있다는 단점이 있습니다.

절차 지향 프로그래밍이란 프로그램 전체가 유기적으로 연결되도록 만들어 순차적으로 처리되도록 만드는 프로그래밍 기법입니다.

c언어에서 사용하는 방식으로 처리 속도가 상대적으로 빠르다는 장점과, 유지 보수가 어렵고, 디버깅이 어렵다는 단점이 있습니다.

하드웨어의 빠른 발전을 통해 객체 지향 프로그래밍의 단점이 크게 부각되지 않게 되어 많은 언어가 객체 지향 프로그래밍을 사용하고 있습니다.

 

 

참고 ) https://jeong-pro.tistory.com/95

 

객체 지향 프로그래밍이 뭔가요? (꼬리에 꼬리를 무는 질문 1순위, 그놈의 OOP)

객체 지향 프로그래밍(Object Oriented Programming) 여러 소프트웨어 관련 IT기업 신입사원 기술면접에서 면접자들 긴장을 풀어줄 겸 워밍업으로 자주 나오는 질문이다. "객체 지향 프로그래밍에 대해

jeong-pro.tistory.com

https://jongminfire.dev/%EA%B0%9D%EC%B2%B4%EC%A7%80%ED%96%A5-%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%B0%8D%EC%9D%B4%EB%9E%80

 

 

객체지향 프로그래밍이란?

객체 지향 프로그래밍이란? 객체 지향 프로그래밍 (Object-Oriented Programming, OOP…

jongminfire.dev

 

 

추가 질문 2. 객체 지향 프로그래밍의 특징은?

 

 - 답 : 

객체 지향 프로그래밍의 특징으로는 캡슐화 / 상속 / 다형성 / 추상화 으로 4가지가 있습니다.

캡슐화란 대표적으로 클래스가 있으며, 데이터와 메서드를 결합시켜 묶어놓은 것으로 재활용이 원활하고 접근제한자를 통해 정보은닉에도 장점을 보입니다.

상속이란 상위 클래스와 하위 클래스의 관계를 나타내는 것으로 상위 클래스의 데이터와 메서드를 하위 클래스에 물려주거나 물려받는 것을 나타냅니다 

이는 재사용성이 높고, 데이터와 메서드의 자유로운 사용 및 추가가 가능하다는 장점이 있습니다.

다형성이란 어떤 요소에 여러 개념을 넣어 놓은 것으로 오버라이딩과 오버로딩을 통해 같은 이름의 행위를 여러 개 정의하거나 상위 클래스의 행위를 하위 클래스에서 재정의해 사용할 수 있도록 하는 기능입니다.

추상화란 객체의 공통된 속성과 행위를 뽑아내는 것으로 중요한 정보만을 표현해 프로그램을 간단하게 만들 수 있습니다.

 

 

참고 ) https://jongminfire.dev/%EA%B0%9D%EC%B2%B4%EC%A7%80%ED%96%A5-%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%B0%8D%EC%9D%B4%EB%9E%80

 

객체지향 프로그래밍이란?

객체 지향 프로그래밍이란? 객체 지향 프로그래밍 (Object-Oriented Programming, OOP…

jongminfire.dev

 

 

추가 질문 3. 유니티의 생명주기에 대해 설명하라

 

 - 답 :

Awake -> OnEnable -> Start -> FixedUpdate -> OnTrigger와 OnCollision -> Update -> LateUpdate -> OnDisable -> OnDestroy -> OnApplicationQuit 의 생명주기를 가집니다

 

Awake 는 스크립트가 실행될 때 한 번만 호출되며 Start 이전에 실행되기에 초기화 순서를 정할 수 있습니다

 

OnEnable 은 인스펙터에서 체크를 통해 게임 오브젝트를 활성화 할 때 사용되며, 활성화 할 때마다 호출됩니다.

 

Start 는 Update 함수가 호출 되기 전에 한 번만 호출됩니다.

 

FixedUpdate 는 주로 물리 엔진을 사용하는 경우 일정 시간 간격으로 힘을 가할 때 사용하는 함수로 일정한 발생 주기마다 호출됩니다.

 

Update 는 프레임마다 호출되는 함수로 게임의 핵심 로직에 사용됩니다. 주기가 일정하지 않습니다.

 

LateUpdate 는 모든 Update 함수가 실행되고 나서 호출되며, 주로 카메라 이동 로직에 사용합니다.

 

OnDisable 은 게임 오브젝트 또는 스크립트가 비활성화 되었을 때 호출됩니다.

 

OnDestroy 는 오브젝트 생존 기간의 마지막 프레임이 업데이트 된 후 실행됩니다.

 

OnApplicationQuit 는 응용 프로그램 종료 전에 모든 오브젝트에서 호출됩니다.

 

 

참고 ) https://itmining.tistory.com/47

 

[유니티 기초] 유니티 생명주기 (Life Cycle)

이 글은 PC 버전 TISTORY에 최적화 되어있습니다. 유니티의 생명주기유니티는 사용자가 호출하지 않아도 호출되는 함수들이 있습니다. 그 함수의 호출 주기를 유니티의 생명주기(LifeCycle)이라고 부

itmining.tistory.com

 

 

추가 질문 4. Json과 SO란 무엇이고 차이점은 무엇인가?

 

- 답 

Json과 SO는 모두 데이터를 관리하는 방식 중의 하나 입니다. Json은 자바스크립트에서 객체를 만들 때 사용하는 표현식을 의미하며, 단순히 데이터를 표시하는 데이터 포맷입니다.

기본적으로 Key와 Value값을 가지며, 장점으로 쉽고 빠르며, 언어에 독립적으로 사용할 수 있다는 점이 있고, 단점으로는 하나의 값을 변경하더라도 엑셀에서 Json으로 변환 후 유니티에 추가하는 과정을 거쳐야 하기 때문에 번거로울 수 있다는 점이 있습니다.

SO는 스크립터블 오브젝트로 유니티에서 제공하는 대량의 데이터를 저장하는데 사용할 수 있는 데이터 컨테이너입니다.

프로젝트 진행 시 유니티 에디터에서 바로 수정할 수 있는 장점이 있지만, 유저 데이터와 같이 가변적인 데이터는 사용할 수 없다는 점이 있습니다.

 

 

참고 )https://wergia.tistory.com/189

 

[Unity3D] Scriptable Object - 스크립터블 오브젝트(Scriptable Object) 기본 사용법

Scriptable Object - 스크립터블 오브젝트(Scriptable Object) 기본 사용법 작성 기준 버전 :: 2019.1 ~ 2019.2 [이 포스트의 내용은 유튜브 영상으로도 시청하실 수 있습니다] 스크립터블 오브젝트(Scriptable Object

wergia.tistory.com

 

https://gall.dcinside.com/mgallery/board/view/?id=game_dev&no=138040

 

유니티 SO 사용하는 분들 질문좀 - 인디 게임 개발 마이너 갤러리

개발하면서 몬스터들의 데이터들을 외부 형식인 csv, json 등을 사용해서 데이터를 읽어온 후 스크립트를 자동으로 생성하는 툴 만들어서 관리했는데Scriptable Object 사용해서 관리하는것도 공부해

gall.dcinside.com

 

https://m.blog.naver.com/cdw0424/221472590996

 

유니티(Unity) - Scriptableobject(SO)

1. 저장용으로는 적합하지 않다 저장 불러오기에는 Json이나 XML 등을 사용하자. 2. 일종의 포인터와 ...

blog.naver.com

 

https://gxnzi.tistory.com/61

 

JSON(JavaScript Object Notation) 정의, 구조, 장단점

JSON (JavaScript Object Notation) 이란 - JSON이란 경량의 데이터 교환 형식으로 프로그래밍 언어가 아닌 단순히 데이터를 표시하는 표현 방법, 데이터 포맷입니다. 자바스크립트 (Javascript)에서 객체를 만

gxnzi.tistory.com

##################################################################

둘 모두 데이터를 관리하는 방식

so
meta파일(읽기 전용)이 됨 -> 유저 데이터와 같이 가변적인 데이터는 so로 쓰면 안 됨

so는 유니티에 내장되어 있어 값 하나 변경한다면 바로 unity에서 수정 가능

json
엑셀로 변환해 편하게 보기 쉬움

값을 하나 변경하면
데이터테이블(엑셀) -> json -> db -> api(클라이언트)
 해당과정을 거쳐야 함 -> 번거로움

##################################################################

 

 

7. 가비지 컬렉션이란 무엇인가

 

 - 답 

메모리의 관리 방법 중 하나로, 더 이상 쓸모 없어진 메모리를 가비지라고 하고, 이 가비지를 효과적으로 처리하는 작업을 가비지 컬렉션이라고 한다.

가비지 컬렉션 Mark and Sweep 알고리즘에 따라 동작하, 가비지 컬렉터가 접근할 수 있는 모든 변수나 객체들을 스캔하면서 어떤 객체를 가르키는지 찾는 과정을 Mark라고 하고, Mark되어 있지 않은 객체들을 힙에서 제거하는 것을 Sweep이라고 한다.

 

 

참고) 가비지 컬렉션, 컬렉터(Garbage Collection)란? :: 은유 개발 블로그 (metafor.kr)

 

가비지 컬렉션, 컬렉터(Garbage Collection)란?

Garbage Collection, 줄여서 약어로 GC라고도 부른다. 영어로 그대로 읽어서 가비지 컬렉션이라고 부른다. 메모리 관리 방법 중에 하나로, 시스템에서 더이상 사용하지 않는 동적 할당된 메로리 블럭

blog.metafor.kr

 

마크 앤 스윕 알고리즘(번역) : 네이버 블로그 (naver.com)

 

마크 앤 스윕 알고리즘(번역)

https://www.google.com/amp/s/www.geeksforgeeks.org/mark-and-sweep-garbage-collection-algorithm/amp/ ...

blog.naver.com

 

 

 

8. 박싱과 언박싱에 대해 설명하고 사용 시 주의점에 대해 말하라

 

 - 답

값 형식의 변수의 타입을 참조 형식인 object형으로 형 변환하는 것을 박싱이라고 하고, object형에서 다시 원상태로 복귀시키는 것을 언박싱이라고 합니다.

박싱을 하는 과정은 하위 차원에서 상위 차원으로의 형변환이기 때문에, 암시적 형변환이 가능하지만, 언박싱은 그 반대이기에 명시적 형변환을 해야하는 주의점이 있습니다.

또한, 값형은 스택에 저장되지만, 참조형은 힙에 저장되기에, 언박싱의 과정에서 가비지가 발생하게 됩니다.

그리고 박싱과 언박싱의 과정은 참조형 변수를 선언하며 힙 영역에 할당하는데 걸리는 시간보다 4~20배 정도 더 걸리기 때문에 사용 시, 성능적인 부분에서 주의할 필요가 있습니다.

 

 

참고) [c#] 박싱(boxing), 언박싱(unboxing) 개념과 사용 이유 (tistory.com)

 

[c#] 박싱(boxing), 언박싱(unboxing) 개념과 사용 이유

기존에 타입을 변환하는것을 형변환(type casting)이라고 했었습니다. (형변환은 관련 포스팅 참조 바랍니다.) 박싱과, 언박싱도 형변환을 하는것이지만 조금 결이 다른데요. 1. 박싱과 언박싱이란?

yeko90.tistory.com

 

 

 

9. 배열, List, ArrayList, Dictionary의 차이점을 설명하고 dictionary의 구현 방법과 검색이 빠른 이유를 설명하라

 

 - 답

넷 모두 데이터 집합으로, 집합의 크기가 정해져 있는지, 데이터의 타입이 동일한지에 따라 구분할 수 있습니다.

배열은 크기가 정해져 있고 동일한 타입을 가지는 데이터의 집합이고, 

리스트는 크기가 정해져 있지 않고 동일한 타입을 가지 데이터의 집합이며, 

어레이리스트는 크기가 정해져 있지 않고 데이터의 타입이 동일하지 않아도 되는 데이터의 집합이고,

딕셔너리는 크기가 정해져 있지 않고 키와 값을 한 쌍으로 갖는 데이터의 집합입니다.

딕셔너리는 c#에서 자료구조의 해시테이블과 같은 역할을 하며, 검색하고자 하는 키를 입력받아, 해시함수를 통해 얻은 해시를 배열의 인덱스로 환산하여 데이터에 접근하는 방식으로 구현됩니다.

구조상 키만 입력하면 해시함수만 거치면 키에 해당하는 값에 접근할 수 있기 때문에 검색이 빠릅니다.

 

검색 시

배열의 시간복잡도 : O(1) 인덱스 번호를 통해 바로 접근

리스트의 시간복잡도 : O(n) 각 노드에 다음 노드의 주소가 들어있으므로, 순차적으로 접근

어레이리스트의 시간복잡도 : O(n) 리스트와 동일

딕셔너리의 시간복잡도 : O(1) : 키 값을 통해 바로 접근

 

 

참고)  [C#] 배열, 리스트, 딕셔너리 (Array, List, Dictionary) (tistory.com)

 

[C#] 배열, 리스트, 딕셔너리 (Array, List, Dictionary)

배열 (Array) 배열이란 크기가 고정되어있는 데이터의 집합(컨테이너)이다. ↓ 선언 방식 string[] FruitArray = new string[4]; private void Awake() { FruitArray[0] = "Banana"; FruitArray[1] = "Apple"; FruitArray[2] = "Orange"; Fru

wonseok1112.tistory.com

 

[C#]컬렉션, ArrayList (tistory.com)

 

[C#]컬렉션, ArrayList

.NET 프레임워크가 제공하는 컬렉션 클래스에서 배열과 유사한 ArrayList를 소개합니다. 배열은 정해진 크기만큼 값을 추가할 수 있으며, 동일한 타입만 다룰 수 있습니다. 하지만, ArrayList는 크기가

developer-talk.tistory.com

 

[자료구조] 해시 테이블 (Hash Table) (tistory.com)

 

[자료구조] 해시 테이블 (Hash Table)

목차 해시 테이블 (Hash Table) 알아보기 해시 테이블(hash table)에 대해 알아보기 전에 Direct address table에 대해 알아보도록 하겠습니다. Direct Address Table Direct address table은 키 값을 배열의 인덱스로 환

yoongrammer.tistory.com

 

연결리스트(Linked List)와 배열(Array), 그리고 시간복잡도의 차이에 대해 : 네이버 블로그 (naver.com)

 

연결리스트(Linked List)와 배열(Array), 그리고 시간복잡도의 차이에 대해

(자료구조 공부용 포스팅) 연결리스트와 배열이 어떻게 다른거야? 이번 글은 연결리스트중에서도 단일 연결...

blog.naver.com

 

 

10. 제네릭이란 무엇인지 설명하라

 

 - 답

클래스를 정의할 때, 데이터 요소의 타입을 확정하지 않고, 데이터 타입 자체를 타입 파라미터 받아들이도록 설정해주는 기능입니다.

클래스명과 함께 구체적인 데이타 타입을 함께 지정해 사용하며, 이렇게 하면 일부 상이한 데이타 타입 때문에 여러 개의 클래스들을 따로 만들 필요가 없어지게 되어 재사용성을 크게 늘릴 수 있습니다.

클래스 이외에도 인터페이스나 메서드에도 적용될 수 있습니다.

 

 

참고) C# 제네릭 - C# 프로그래밍 배우기 (Learn C# Programming) (csharpstudy.com)

 

C# 제네릭 - C# 프로그래밍 배우기 (Learn C# Programming)

C# 제네릭 (C# Generics) 일반적으로 클래스를 정의할 때, 클래스 내의 모든 데이타 타입을 지정해 주게 된다. 하지만 어떤 경우는 클래스의 거의 모든 부분이 동일한데 일부 데이타 타입만이 다른

www.csharpstudy.com

 

 

 

11. 델리게이트(Delegate)의 개념에 대해 설명하라

 

 - 답

델리게이트는 메서드를 다른 메서드의 인자로 전달하거나, 메서드를 변수로 저장하거나, 메서드를 이벤트에 연결하는 동작이 가능하도록 해주는 매서드를 참조하는 형식입니다.

다른 클래스에서 직접적인 접근 없이 해당 함수를 사용하기 위해 주로 사용됩니다.

 

 

참고) 델리게이트 (delegate) (velog.io)

 

델리게이트 (delegate)

델리게이트는 함수 포인터와 비슷한 개념으로 메서드를 참조하는 형식이다.

velog.io

 

[c#] 델리게이트(delegate) 개념 | += , -= (tistory.com)

 

[c#] 델리게이트(delegate) 개념 | += , -=

정수값을 변수에 담고 싶을때는 정수를 담고싶을때는 int로 선언하면됩니다. 문자를 담고싶을때는 string로 선언하면됩니다. 함수(or 메소드)를 변수에 담고 싶을땐 어떻게 할까요? 이때 사용하는

yeko90.tistory.com

 

[C#] 델리게이트(delegate) - 델리게이트, 콜백 사용 방법 및 사용 이유 (tistory.com)

 

[C#] 델리게이트(delegate) - 델리게이트, 콜백 사용 방법 및 사용 이유

델리게이트란? 대리자 라는 뜻으로 c++의 함수 포인터와 비슷한 개념을 가지고 있다. 포인터의 설명은 위와 같다고 보면된다. 솔직히 정말 잘 정리한듯,,, 함수 포인터는 함수식을 인스턴스의 포

jjomnoon-diary.tistory.com

 

 

 

12. 'delegate', 'event', 'action', 'func' 간의 차이를 설명하라 또한 프로젝트에서 적용해본 경험에 대해 말하라

 

 - 답

delegate, action, func은 모두 대리자로 메소드에 대한 참조 변수를 만들기 위해 존재합니다.

이 중 delegate가 가장 기본적인 형태입니다.

action과 func은 프로그래머가 일일이 delegate를 정의하지 않아도 되게 c# 내부적으로 정의하고 있는 대리자로, action은 인자만 존재하는 delegate, func은 인자와 결과값이 모두 존재하는 delegate입니다.

event는 클래스 내부에서만 실행할 대리자로 다른 곳에서 사용하지 못하게 하도록 컴파일러에 명시적으로 알려주는 기능을 합니다.

delegate가 callback의 용도로 사용되며, 인터페이스 내부에서 선언할 수 없지만, event는 객체의 상태 변화나 사건의 발생을 알리는 용도로 사용되고, 인터페이스 내부에서 선언할 수 있습니다.

 

프로젝트에서 적용해 본 경험 추가하기

 

 

참고) https://www.inflearn.com/questions/566161/delegate-event-%EC%99%80-action-func-%EC%9D%98-%EC%B0%A8%EC%9D%B4%EC%A0%90

 

(delegate,Event) 와 (Action,Func)의 차이점 - 인프런

둘다 구조를 정의하고 +=,-= 로 이벤트 추가 삭제 하고 .Inovke()로 호출하는거 같은데 같은 기능으로 하는 녀석으로 봐야하나요 다른 기능을 하는 녀석으로 봐야하나요? - 질문 & 답변 | 인프런

www.inflearn.com

 

https://velog.io/@sunbei00/C-delegate-Event-Func-Action

 

C# delegate & Event & Func, Action

C사용방법은 다음과 같다.'접근제어자' delegate '반환형' 'Delegate명'('파라미터')다음과 같이 (+, += , ...) 연산자를 이용해서 한번에 여러가지 메서드를 실행할 수 있게끔 하는 것이 Delegate Chain 이라

velog.io

 

 

 

13. 람다식( Lambda Expression)에 대해 설명하라

 

 - 답

람다식이란 접근자, 이름, return문이 없는 익명 함수로서, 코드를 간결하게 만들고, 지연 연산으로 성능을 높이고, 반복 관련 코드의 불필요한 부분들을 제거할 수 있습니다.

 

 

 

참고) C# 람다식 - C# 프로그래밍 배우기 (Learn C# Programming) (csharpstudy.com)

 

C# 람다식 - C# 프로그래밍 배우기 (Learn C# Programming)

C# => 람다식 (Lambda Expression) C# 3.0부터 지원하는 => 연산자는 C#에서 람다식(Lambda Expression)을 표현할 때 사용한다. 람다식은 무명 메서드와 비슷하게 무명 함수(anonymous function)를 표현하는데 사용된

www.csharpstudy.com

 

[C#]람다식, 람다표현식(Lambda expression) (tistory.com)

 

[C#]람다식, 람다표현식(Lambda expression)

람다식(Lambda expression)이란? 람다식(Lambda)식은 접근자, 함수 이름, return문이 없는 익명 함수(anonymous function)입니다. 람다식을 사용하면 더 짧은 코드를 작성할 수 있으며 코드를 더 가독성 있게 만

developer-talk.tistory.com

 

C# 람다식이란? (tistory.com)

 

C# 람다식이란?

1. 람다식의 의미 람다(Lambda)라는 용어와 C#에서 제공하는 람다식과는 어떤 연관관계가 있는 것일까요? 람다라는 단어가 생소하니 람다식이라고 하면 언뜻 그 의미가 잘 떠오르질 않습니다. (개

spaghetti-code.tistory.com

 

람다식 - 나무위키 (namu.wiki)

 

람다식

람다식, 또는 람다 함수라 부른다. 프로그래밍 언어 에서 사용되는 개념으로, 익명 함수(匿名函數, Anonymous

namu.wiki