개념 정리 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