2023-10-25 TIL(ref와 out, 접근제한자)

SeongH·2023년 10월 26일

<기술면접 2번>

'ref'와 'out'의 사용 시 차이는 무엇인가요?

보통함수에서와 다르게 ref와 out을 사용한 함수는 넘겨받은 값 자체가 바뀌게 됩니다.
하지만 ref 키워드는 인자를 함수로 넘겨주는 형태인 반면 out 키워드는 함수 내에서 정의한 값을
바깥으로 넘겨주는형태로 서로 반대의 방향을 가지고 있습니다.
따라서 ref는 전달 인수가 반드시 초기화 되어있어야하고 out키워드는 초기화 되어있지 않아도 참조 전달이 되기 때문에
ref는 기존 변수를 메서드에서 수정하려 할 때 사용하고 out은 메서드 내에서 생성된 값을 반환 할 때 사용합니다.

<ref와 out키워드 메서드 오버로딩>

메서드 오버로딩에서는 ref와 out을 동시에 사용할 수 없습니다. ref와 out은 런타임에 다르게 처리되지만
컴파일은 동일하게 처리됩니다 (CLR은 ref와 out에 대한 IL을 생성하는 동안 둘을 구분하지 않습니다).
따라서 한 메서드가 ref 매개 변수를 사용하고
다른 메서드가 out 매개 변수를 사용하면 메서드를 오버로드 할 수 없습니다.

<중요>
런타임
-사용자에 의해 프로그램이 실행되는 시간입니다.
컴파일타임
-개발자가 프로그램을 생성하는 과정입니다.



<기술면접 3번>

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

접근제한자란 말그대로 외부로부터의 타입 혹은 그타입 멤버들의 접근을 제한할때
사용하는 키워드로 public private protected internal 4가지가 있습니다.
public은 제한을 주지않고 어느곳이든 자유롭게 사용가능하고
private은 해당클래스에서만 접근이 가능하며
protected는 상속받은 자식의 클래스에서만 사용가능한 제한을 가집니다
마지막으로 internal은 동일한 어셈블리 내에서만 접근이 가능하다 쉽게 말해 같은 프로젝트 파일에서만 접근이 가능합니다

.NET 에서 어셈블리란?

NET 런타임 환경에서 실행할 수있는 (사전 컴파일 된) 코드 덩어리이다.

NET 프로그램은 하나 이상의 어셈블리로 구성된다.

어셈블리는 .net 응용 프로그램의 가장 작은 배포 단위이다.

dll 또는 exe 으로 주로 두 가지 유형이 있다.

개인 어셈블리 :
한 응용 프로그램의 유일한 속성 인 dll 또는 exe . 일반적으로 응용 프로그램 루트 폴더에 저장된다.
공용 / 공유 어셈블리 :
한 번에 여러 응용 프로그램에서 사용할 수있는 dll. 공유 어셈블리는 GAC, 즉 Global Assembly Cache에 저된다

C# 프로그램에서 컴파일을 통해서 만들 수 있는 파일은 exe와 dll 형태의 파일이고,

exe 는 Main() 메서드를 포함하는( 진입점)을 반드시 포함하는 형태이다.

dll 은 반대로 진입점이 없는 형태이다.

컴파일을 통해 나온 결과 파일을 C# 에서는 어셈블리(Assembly) 라고 부른다.

dll 이든 exe든 우선 컴파일되서 나온다면 어셈블리인것이다.

HelloWorld.cs 를 컴파일하여 만들어진 HelloWorld.exe 또한 어셈블리가 되고 어셈블리 내에 있는 클래스들은 namespace를 통해서 구분하게 된다.

profile
개발자 꿈나무

0개의 댓글