기본적인 c# 예제 정리
박싱(boxing) = 값타입에서 참조타입으로 변환하는 과정언박싱(un-boxing) = 참조타입에서 값타입으로 변환하는 과정값(value type type)형식 = 개체에 값 자체를 담고 있는 구조, int, double 등의 자료형은 기본저긍로 값 형식의 데이터 구
컴퓨터는 부동 소수점 표준인 IEEE 754를 사용해 실수를 표현, 실수는 다음과 같이 세 부분으로 나뉜다.ㄴ 부호 비트(Sign bit) : 숫자가 양수인지 음수인지 나타냄ㄴ 지수(Exponent) : 소수점의 위치를 조정ㄴ 가수(Mantissa 또는 Fraction
하노이의 탑은 3개 기둥에서 좌측(하단에서 부터 큰 순에서 작은순으로 쌓여 시작)에서 시작해서 우측 끝(시작과 같은 모양)으로 만드는 퍼즐로 3개의 규칙이 있다.한 번에 한개의 원판만 옮길 수 있다.가장 위에 있는 원판만 이동할 수 있다.큰 원판이 작은 원판 위에 있어
생성자(Constructor) ㄴ 클래스 이름과 동일한 이름을 가지는 메서드로, 주로 클래스의 인스턴스를 생성할 때 사용되며 클래스는 적어도 한 개의 생성자를 가진다. ㄴ 생성자는 void를 포함한 반환값을 가지지 않는다. 소멸자(Destructor) ㄴ 클래스 이름
깊은 복사를 구현해야 하는 이유와 예시
객체지향의 4요소
Is-A : 상속 관계를 의미 어떤 클래스가 다른 클래스의 "종류"일 때 성립하는 관계예를 들어, "고양이는 동물이다"와 같이 고양이 클래스는 동물 클래스를 상속받는다.어떤 클래스가 다른 클래스를 "가진다"일 때 성립하는 관계 예를 들어, "사람은 심장을 가진다"와 같
C#에서 배열의 성능은 데이터 타입(Reference Type vs. Value Type)에 따라 크게 달라진다. 메모리 관리 방식, 캐시 활용, 그리고 GC(Garbage Collector)의 영향 등 다양한 요인에 의해 발생 Reference Type(참조) 배열
컬렉션(collection)이란, 같은 성격을 띠는 데이터의 모음을 담는 자료 구조. 위의 설명에서 컬렉션만 배열로 한번 바꿔 보면 배열 설명과 정의가 같다. 즉 배열도 .NET 프레임워크가 제공하는 다양한 컬렉션 자료 구조의 일부 List 특징: 순서가 보장되는
해시 테이블은 Key-Value 속성을 가진다. key는 value를 찾는 수단이다.해시(Hash)는 색인 또는 인덱스, 해시 펑션(hash function)은 key->hash로 만들어 주는 함수, 해시 테이블은 해시(Hash)를 주소로 삼아 데이터를 저장하는 자료
싱글톤 패턴이란싱글톤(Singleton)패턴은 객체의 인스턴스가 오직 1개만 생성되는 패턴을 말한다.싱글톤 패턴이 적용된 객체는 하나의 인스턴스만 생성할 수 있고, 다른 객체에서 싱글톤 객체의 인스턴스를 생성하려 할 경우, 기존의 생성된 인스턴스가 있다면 이를 반환하는
LINQ란? C#에서 데이터를 쿼리하고 조작할 때 루프나 조건문 등 복잡한 논리리문을 작성해야 할 때 작업을 간소화시켜주는 LINQ(Language-Intergrated Query)라는 기능을 제공한다. LINQ는 다양한 데이터 소스를 쿼리하고 조작하기 방법을 제공하는
링크드 리스트(LinkedList)란?데이터를 저장하는 노드들이 서로 연결되어 있는 선형 데이터 구조이다.각 노드들은 데이터 값과 다음 노드를 가르키는 포인터를 가지고 있고, 배열과 달리 메모리 공간이 연속적으로 할당될 필요가 없어 메모리 효율성이 높고, 중간에 데이터
C# 코드 개념 및 예제 정리 1. C# 프로그램의 기본 구조 using: 다른 네임스페이스에 정의된 형식(클래스, 구조체 등)을 이름 앞에 네임스페이스를 붙이지 않고 사용할 수 있게 해준다. namespace: 관련 있는 코드들을 그룹화하여 이름 충돌을 방지합니다
1. 메소드란 무엇일까? 메소드는 객체지향 프로그래밍 언어에서 사용되는 용어로 C와 C++에서는 함수Function이라 불렸고 파스칼에서는 프로시저Procedure라 불렀다. 또는 서브 프로그램subprogram이라 부르는 언어도 있었다. 엄밀히 의미 차이가 존재하지
1. 클래스란 무엇인가? 클래스는 복합 데이터 형식이다. 객체지향 관점에서는 객체를 위한 청사진(집약체)이며, 코드 관점에서는 하나 이상의 데이터 형식을 조합해서 만드는 복합 데이터 형식 2. 클래스 선언과 객체 생성 클래스를 사용하기 위해서는 먼저 선언해야 한다
인터페이스란 (Interface) 인터페이스는 일종의 약속입니다. 인터페이스를 선언하면 해당 인터페이스를 구현하는 클래스는 인터페이스에 정의된 모든 멤버(메서드, 속성 등)를 반드시 구현해야 하는 계약을 맺게 됩니다. 인터페이스의 선언 인터페이스는 inter
C# 프로퍼티 객체 지향 프로그래밍의 핵심 원칙 중 하나는 캡슐화 (Encapsulation)입니다. 이는 객체의 데이터를 외부에서 함부로 접근하거나 변경하지 못하도록 보호하는 것을 의미합니다. C#에서는 이러한 캡슐화를 우아하게 구현할 수 있는 강력한 기능인 프로퍼
1. 배열 (Array) 배열은 동일한 형식의 여러 변수를 모아놓은 것입니다. 우리가 지금까지 하나의 데이터만 저장했던 변수와 달리, 배열은 여러 데이터를 하나의 이름으로 관리할 수 있게 해줍니다. 배열 선언 및 초기화 배열을 선언할 때는 데이터 형식 뒤에 []를
1\. 제네릭 프로그래밍이란?C2\. 왜 제네릭을 사용할까요?제네릭이 없다면, 우리는 다양한 데이터 형식에 대해 동일한 로직을 수행하는 함수나 클래스를 만들 때 각 형식별로 코드를 따로 작성해야 합니다.예를 들어, 정수형 배열을 복사하는 CopyArray 함수와 문자열
1\. 예외(Exception)란 무엇인가?예외는 프로그램 실행 중에 발생하는 비정상적인 상황을 의미합니다. 예를 들어, 배열의 유효 범위를 벗어난 인덱스에 접근하거나, 0으로 숫자를 나누려 할 때 예외가 발생할 수 있습니다. 예외가 발생하면 해당 지점에서 프로그램의
1\. 대리자(Delegate)란 무엇인가?대리자는 메서드를 대신 호출해주는 역할을 합니다. 쉽게 말해, 메서드를 참조하는(가리키는) 형식이라고 생각할 수 있습니다. 사람으로 비유하자면, 사장님이 비서에게 업무 지시를 하면 비서가 해당 업무를 담당하는 직원에게 전달하는
람다식은 익명 메서드를 만드는 또 하나의 방법입니다. 익명 메서드가 무엇인지 이미 알고 있다면 람다식을 이해하는 데 도움이 될 것입니다. 대리자(Delegate)로 익명 메서드를 만들 수 있는데, 마이크로소프트는 대리자가 할 수 없는 일을 람다식이 할 수 있게 C람다(
LINQ는 컬렉션을 편리하게 다루기 위한 목적으로 만들어진 기능이며, CLINQ는 데이터를 쿼리하기 위해 여러 가지 절(clause)을 사용합니다. 기본적인 쿼리 구문은 다음과 같은 형태로 이루어집니다.from → where → orderby → select각 절의 역
리플렉션은 실행 시점에 어셈블리, 모듈, 형식(클래스, 인터페이스 등)의 정보를 검사하고 조작하는 기능입니다. 즉, 리플렉션을 통해 코드의 메타데이터(Metadata), 즉 코드에 대한 데이터에 접근할 수 있습니다.리플렉션을 사용하면 다음과 같은 작업이 가능해집니다:특
이번 글에서는 Cdynamic 형식을 이해하면 다음과 같은 내용을 알 수 있습니다:dynamic 형식의 정의dynamic 형식을 이용한 변수 선언 및 사용 방법dynamic 형식을 이용한 COM 객체 처리 방법파이썬과 같은 동적 언어와의 상호 운용성 확보 방법자, 그럼
C예를 들어, 특정 경로가 파일인지 디렉터리인지 확인하고, 존재한다면 마지막 쓰기 시간을 업데이트하거나, 존재하지 않는다면 파일이나 디렉터리를 새로 생성하는 코드를 살펴볼 수 있습니다.파일의 내용을 직접 읽거나 쓸 때는 '스트림(Stream)'이라는 개념을 사용합니다.
프로세스(Process): 실행 중인 프로그램을 의미합니다. 각 프로세스는 독립적인 메모리 공간을 가집니다. 마치 컴퓨터에서 실행되는 여러 개의 독립적인 애플리케이션과 같습니다.스레드(Thread): 프로세스 내에서 실행되는 실행 단위입니다. 하나의 프로세스는 하나 이
가비지 컬렉터란 무엇인가요?기본적으로 C하지만 모든 메모리가 가비지 컬렉터의 관리 대상은 아닙니다. C객체 할당과 수거 과정C가비지 컬렉터는 객체가 사용 중인지 아닌지를 판단하기 위해 루트(Root)라는 개념을 사용합니다. 루트에는 스택에 있는 객체나 정적 필드 등이
코루틴은 함수나 루틴의 실행을 중단(suspend)하고 필요에 따라 다시 재개(resume)할 수 있는 프로그래밍 구조입니다. 일반적인 메서드는 호출되면 실행을 완료한 뒤 호출한 곳에 제어를 반환하지만, 코루틴은 실행 중간에 yield와 같은 특정 키워드를 사용하여 실