C#/기초

C# - 개념 정리 2 / 변수, 코드 컨벤션 , 배열, 컬렉션, 박싱 & 언박싱 / 면접 질문 대비

근본넘치는개발자 2024. 9. 23. 23:30

개념 정리 1에서 이어집니다. 

2024.09.20 - [C#] - C# - 개념 정리1 / C# 특징 및 기초 /면접 질문 대비

 

리터럴(literal) :

직접 사용되는 값. (메모리 위치 안에 저장되는 값)

컴파일러에 의해 상수 값으로 처리된다.

 

변수 :

데이터를 저장하고 사용하기 위해 할당받은 공간 

int a // int 자료형 변수 선언

키워드(Kewords) :

변수명을 지을 때, 이미 용도가 정해져 있어 사용할 수 없는 단어들 

ex) public, static, if 등 

 

식별자(identifiers) :

변수, 함수, 클래스 등에 사용되는 이름

 

 

코드 컨벤션

:코드 작성 규칙

-> 가독성과 유지 보수를 용이하게 하기 위해 사용.

 

자주 사용되는 코드 컨벤션 

파스칼 케이스 (PasCal Case) : 첫 글자 대문자, 이어지는 첫 글자도 대문자.

ex) UserAccountNumber

 

카멜 케이스 (Camel Case) : 첫 글자는 소문자, 이어지는 단어 첫 글자 대문자.

ex) userAccountNumber

 

스네이크 케이스(Snake_case) : 모든 단어 소문자 표기, 언더바(_)로 연결.

ex) user_account_number

 

케밥 케이스(Kebab-case) : 모든 단어 소문자 표기, 단어 대시(-)로 연결. 

ex) user-account-number

 

 

아래 블로그 참고 - 코드 컨벤션에 대해 자세히 정리되어 있음.

https://blog.naver.com/sweetie_rex/223158572535

 

 

C# 식별자 규칙

  • 들여쓰기에 네 개의 공백을 사용. 탭 사용 X.
  • 가독성을 위해 코드를 일관되게 정렬.
  • 모바일 화면에서 문서 코드의 가독성을 위해 줄을 65자로 제한.
  • 긴 문을 여러 줄로 나누기 = 명확성 향상.
  • 중괄호에는 "Allman" 스타일을 사용.
  • 여는 중괄호와 닫는 중괄호는 그 자체가 새 줄. 중괄호는 현재 들여쓰기 수준에 맞춰 정렬.
// BSD(Allman) Style 설명
if()
{
    if() //스페이스 4번으로 줄 맞춤
    {
    
    	if()
        {
        
        }
    
    }

}
  • 필요한 경우 이진 연산자 앞에 줄 바꿈이 있어야 한다.

 

https://learn.microsoft.com/ko-kr/dotnet/csharp/fundamentals/coding-style/coding-conventions

 

 

형 변환 

형변환을 통해 자료형이 다른 변수 간에 값을 할당하거나 연산을 수행 할 수 있다.

임시적 형 변환 또는 암시적 형 변환이 있다. 

 

//명시적 형 변환
int a = 10;
float b = (float)a;

//암시적 형 변환 
float a = 10; //10은 int 형이나 float형으로 암시적 변환

 

정리 :

임시적 형 변환 -> 직접 변환할 자료형 입력

암시적 형 변환 -> 변환할 자료형 입력하지 않음

 

 

배열(Array)

동일한 자료형의 값들이 연속적으로 저장되는 자료구조

선언한 크기만큼의 공간을 메모리에 할당받는다.

 

 

※ 가변 배열 : 요소의 크기가 서로 다른 배열

int[][] jaggedArray = new int[3][];

jaggedArray[0] = [1, 3, 5, 7, 9];
jaggedArray[1] = [0, 2, 4, 6];
jaggedArray[2] = [11, 22];

 

https://learn.microsoft.com/ko-kr/dotnet/csharp/language-reference/builtin-types/arrays

 

 

컬렉션 

자료를 모아 놓은 데이터 구조

 

사용하기 위해서는 System.Collections.Generic 네임스페이스를 추가해야한다.

Collections 네임스페이스 안에는

List, ArrayList, Dictionary, Stack, Queue, Hashet 등의 컬렉션이 존재한다.

 

※ List와 ArrayList의 차이? 

 

List :

가변적 크기를 갖는 배열구조 (단일 타입)

배열보다 빠르고 효율적

박싱/ 언박싱 Overhead 없음

 

Array List :

가변적 크기를 갖는 배열구조(여러 타입 혼합 저장 가능) 

배열보다 느린 속도

박싱(Boxing) / 언박싱(UnBoxig) OverHead 없음.

 

 

https://learn.microsoft.com/ko-kr/dotnet/api/system.collections.arraylist?view=net-8.0

 

박싱(Boxing) / 언박싱(Unboxing) ?

 

박싱(Boxing) :

값형을 참조형으로 변환하는 과정 

값형 변수 값을 메모리 힙 영역에 할당 = 가비지 컬렉션의 대상이 될 수도 있음

 

언박싱(Unboxing) :

박싱(Boxing)된 객체를 다시 값형으로 변환하는 과정

= 참조 형식을 값형으로 돌린다고 모두 언박싱은 아니다.

 

박싱/언박싱 장단점

 

장점 :  

메모리 최적화 가능

 

단점 :

잦은 박싱/언박싱 으로 인한 성능 저하 가능성

메모리 할당 및 해제 비용 발생

잘못된 형식으로 언박싱 시 에러 발생

 

 

대표적인 참조 형식으로 object 존재.

object는 모든 클래스의 상위 클래스로서, 모든 형식 참조 가능한 타입

 

(이전 개념 정리 1 글 참고) 

 

//박싱과 언박싱
int i = 123;
Object O = i; // 박싱

O = 123;
i = (int)O // 언박싱

https://learn.microsoft.com/ko-kr/dotnet/csharp/programming-guide/types/boxing-and-unboxing

 

3편으로 이어집니다.

 

2024.09.24 - [C#/기초] - C# - 개념 정리 3 / 메서드, 구조체, 클래스, 객체 / 면접 질문 대비

 

 

https://www.guru99.com/ko/c-sharp-interview-questions.html

 

상위 50개 C# 인터뷰 질문 및 답변(2024)

신입생 및 경력자를 위한 C# 인터뷰 질문: 다음은 신입생 및 2/3/5/10년 경력 전문가를 위한 기본부터 고급 C# 인터뷰 질문과 답변 목록입니다.

www.guru99.com

https://shypang.tistory.com/16

 

C# 해외 면접시 TOP50

가장 인기있는 C # 인터뷰 질문 및 답변기본 개념에 대한 질문Q # 1) 객체와 클래스 란 무엇입니까?Ans : 클래스는 실시간 엔터티를 나타내는 데 사용되는 속성 및 메서드의 캡슐화입니다. 모든 인

shypang.tistory.com