코드를 작성하고 컴파일할 때(빌드할 때) 발생하는 시간을 의미한다.즉, 프로그램이 실행되기 전 단계에서 이루어지는 작업이다.\`C- 이때 값이 정해지는 변수를 컴파일 타임 상수(Compile-time constant)라고 한다.\`C\`\`\`csharpconst in
\`C변수는 데이터를 저장하는 공간이므로, 어떤 데이터(숫자, 문자, 논리값 등)을 지정할지 지정해야 한다.이처럼 C하지만 값을 넣기 전에 사용하면 오류가 발생한다!C하지만 var는 반드시 초기화하면서 선언해야 한다!값이 한 번 정해지면 변경할 수 없는 변수를 선언할
| 개념 | JS | C| - | - | - || 값을 변경할 수 있는 변수 | var, let | 일반 변수(int, string 등) || 블록 스코프 변수 | let | 일반 변수(int, string 등) || 값을 변경할 수 없는 변수 | const | con
C하지만, ?(nullable modifier)를 붙이면 null을 가질 수 있는 변수가 된다.즉, ?를 붙이면 해당 값이 null이 될 수도 있고, 숫자 값을 가질 수도 있다.이렇게 만든 변수를 nullable 타입이라고 한다.C데이터베이스에서 null을 다룰 때,특

출처C1\. 값 타입(Value Types)2\. 참조 타입(Reference Types)이 두 가지 타입은 메모리에 저장되는 방식과 동작 방식에서 차이가 있다.메모리의 스택(Stack)에 저장된다.변수에 실제 값 자체를 저장한다.한 변수를 다른 변수에 할당하면 값이
C| 구분 | 스택(Stack) | 힙(Heap) |\| - \| - \| - \|| 저장 위치 | 메모리의 스택 영역 | 메모리의 힙 영역 || 저장 방식 | LIFO (Last In, First Out)방식으로 관리 | 동적 할당 방식 || 속도 | 빠름 (메모리
컴파일러가 자동으로 변환해 주는 변환 방식이다.작은 데이터 타입 → 더 큰 데이터 타입으로 변환할 때 사용된다.데이터 손실이 없기 때문에 안전하게 변환이 가능하다.()(캐스팅 연산자)를 사용할 필요 없다.암시적 변환이 가능한 경우는 아래와 같다!!컴파일러가 자동으로 변
Concatenation(연결)은 여러 문자열을 하나로 합치는 방법이다.장점: 간단하고 직관적이다.단점: 문자열이 계속 생성되기 때문에 성능이 저하될 수 있다.장점: null 값도 허용한다.단점: 가독성이 떨어질 수 있다.여러 개의 문자열을 반복해서 연결할 때는 Str
\`C이스케이프 문자는 백슬래시(\\)를 사용하여 특수 문자를 문자열에 포함시키는 방법이다.결과백슬래시(\\)를 많이 써야 할 때, @를 사용하면 이스케이프 문자를 무시하고 문자열을 그대로 사용할 수 있다.@을 붙이면 \\를 두 번 쓰지 않아도 된다.긴 경로를 표현할

논리 연산자는 부울 값(true또는false)을 조작하는 연산자이다.주로 if문이나 조건식을 평가할 때 사용된다.양쪽 조건이 모두 true여야 결과가 true가 된다.하나라도 false이면 결과가 false가 된다.age >= 18 AND hasID가 true일 때만
if문은 조건이 true일 때만 실행되는 코드 블록을 정의하는 조건문이다.예제는 아래와 같다.if 조건이 false일 때 실행할 코드를 else 블록에 작성할 수 있어.예제는 아래와 같다. 여러 개의 조건을 순차적으로 검사할 때 else if를 사용할 수 있다. 예제는
C변수의 범위는 해당 변수를 사용할 수 있는 코드 영역을 의미한다.C블록 {} 내부에서 선언된 변수는 해당 블록 내부에서만 사용 가능하며, 블록을 벗어나면 변수를 사용할 수 없다.변수 x는 if 블록 내부에서 선언되었기 때문에 블록 밖에서는 접근할 수 없다.메서드 내부
C각 case 끝에는 break 문을 넣어야 함 → 그렇지 않으면 다음 case로 코드가 실행된다.default는 모든 case에 해당하지 않을 때 실행된다 (생략 가능).break 문이 없으면 다음 case도 실행됨 (fall-through).case 2에서 brea
사용자 입력에 따라 기본 산술 연산(+, -, \*, /)을 수행하는 간단한 C1\. 사용자에게 두 개의 숫자를 입력하라는 메시지를 표시합니다.2\. 사용자에게 산술 연산(더하기, 빼기, 곱하기, 나누기)을 선택하라는 메시지를 표시합니다.3\. 조건문을 사용하여 선택한
for문은 C초기식 → 반복 변수 선언 및 초기화 (한 번만 실행됨)조건식 → true일 때만 반복 실행 (거짓이 되면 반복 종료)증감식 → 반복 변수를 증가/감소하여 조건을 만족할 수 있도록 조정numbers.Length를 사용하여 배열 크기만큼 반복한다.i == 5
C반복 횟수가 정해지지 않았거나 사용자의 입력, 센서 데이터, 파일 읽기 등 특정 조건이 만족될 때까지 실행해야 하는 경우 유용하다.조건식이 true인 동안 계속 반복된다.조건식이 false가 되면 반복문을 종료한다.i = 1로 시작 → i <= 5 동안 실행 →
C배열을 사용하면 여러 개의 값을 한 변수에 저장하고 쉽게 관리할 수 있다.배열 선언 방법배열의 타입을 지정해야 한다(int\[], string\[] 등)배열은 크기가 고정된다. (동적 크기 변경 불가)배열 선언 & 초기화 예제배열의 초기 값은 기본값(0, null,
CX(가로) × Y(세로) × Z(깊이) 형태로 공간을 표현할 수 있다.2개의 행, 3개의 열, 4개의 깊이(층)을 가지는 배열이다.기본값(정수형이라면 0)으로 초기화 된다.한 번에 값 초기화\[2,3,4] 구조로 2층의 행렬을 쌓은 형태array3D\[0,0,0] =
IFormattable은 객체를 특정 형식(format)으로 변환할 수 있도록 하는 인터페이스다.즉, ToString(string format, IFormatProvider formatProvider) 메서드를 구현해야 한다.형식 지정 가능: ToString() 메서드
IEnumerable은 컬렉션(배열, 리스트 등)에서 요소를 순차적으로 열거(iterate)할 수 있도록 해주는 인터페이스이다.즉, foreach 문을 사용할 수 있도록 하는 역할을 한다.컬렉션을 순회할 수 있는 기능을 제공한다. (foreach 사용 가능)인덱스(\[
yield 키워드는 IEnumerable과 IEnumerator를 쉽게 구현할 수 있도록 도와주는 기능이다.보통 foreach 문에서 요소를 하나씩 반환하는데 사용되며, 명시적으로 상태를 관리하지 않아도 자동으로 상태를 기억하면서 다음 요소를 반환할 수 있다.예제: y
변수 캡처(Variable Capture) 는 람다 함수(익명 메서드) 또는 로컬 함수에서 바깥 스코프(외부)의 변수를 접근하고 유지하는 기능을 의미한다.즉, 람다 표현식이나 익명 메서드가 자신이 선언된 스코프의 변수를 기억하고 사용할 수 있도록 한다.action()이
델리게이트(Delegate) 는 메서드를 참조할 수 있는 타입(포인터 역할) 이다.즉, 메서드를 변수처럼 저장하고 전달할 수 있는 기능을 제공한다.메서드를 변수처럼 다룰 수 있음 (메서드의 "주소"를 저장)다른 메서드를 실행할 수 있음 (Invoke(), () 사용)다
확장 메서드(Extension Method) 는 기존 클래스의 소스 코드를 수정하지 않고도 새로운 메서드를 추가할 수 있도록 해주는 기능이다.주로 static클래스와 this키워드를 사용하여 구현한다.기존 클래스의 소스 코드 변경 없이 새로운 메서드를 추가할 수 있다.
this 키워드는 현재 인스턴스를 가리키는 참조이며, 클래스나 구조체 내부에서 해당 인스턴스의 필드, 메서드, 속성 등에 접근할 때 사용된다.또한 확장 메서드(Extension Method) 및 생성자 체이닝(Constructor Chaining)에서도 활용된다.thi
제네릭(Generic)은 자료형(타입)을 일반화하여 코드의 재사용성과 유연성을 높이는 기능이다. 제네릭을 사용하면 특정 타입에 종속되지 않고, 다양한 타입에서 동작하는 클래스를 만들 수 있다.제네릭이 필요한 이유는 다음과 같다.코드의 중복을 줄일 수 있다.타입 안정성(
전 시간, 제네릭 타입의 제한에 대한 보충...제네릭 타입의 제한(제약 조건, Constraints) 을 지정할 때,값 형식(struct)인지 참조 형식(class)인지, 특정 인터페이스를 구현했는지 등을 제한할 수 있다.이를 활용하면 잘못된 타입이 들어오는 것을 방지