본문 바로가기
728x90

전체 글63

[C#] Virtual, Abstract, Interface virtual역할 : 메서드, 속성(property), 이벤트 등을 자식 클래스에서 재정의할 수 있도록 허용하는 키워드이다.사용 방법 : 부모 클래스에서 메서드나 속성에 virtual을 붙여서 정의하면, 자식 클래스에서 override 키워드를 통해 재정의를 할 수 있다.특징 : virtual은 선택적 재정의를 허용하므로 반드시 재정의를 할 필요는 없다.public class Parent{ public virtual void message() { Console.WriteLine("Hi, I'm Parent."); }}public class Child : Parent{ public override void message() { Console.WriteLine("Hi, I'm .. 2024. 11. 5.
[C#] this C#에서 this는 클래스나 구조체의 현재 인스턴스를 참고하는 데 사용된다.this를 사용하면 클래스 내부에서 해당 인스턴스의 멤버 변수나 메소드에 접근할 수 있으며, 코드의 가독성을 높이고 현재 인스턴스의 컨텍스트에서 작업을 명확하게 수행할 수 있다.this의 주요 용도1. 현재 인스턴스의 멤버에 접근 : 클래스 내부의 메서드나 생성자에서 클래스의 필드, 프로퍼티, 다른 메서드에 접근할 때 this 키워드를 사용한다.메서드의 매개변수 이름과 클래스의 필드 이름이 같을 때, 필드와 매개변수를 구분하기 위해 this를 사용할 수 있다.public class Person{ private string name; private int age; public Person(string name, i.. 2024. 11. 5.
[C#] object와 var C#에서 object와 var 모두 명시적인 타입 지정 없이 변수 선언이 가능한데, 이 둘이 어떤 차이가 있는지 정리하려 한다.object- object는 .NET Framework에서 제공하는 어떤 데이터든 다룰 수 있는 데이터 형식이다. object는 기본 데이터 형식(int, float 등) 뿐만 아니라 모든 복합 데이터 형식(구조체, 클래스, 배열 등), 사용자 정의 형식까지도 object 형식으로부터 상속받도록 개발되었다. - object는 박싱(boxing)과 언박싱(unboxing)을 통해 값을 저장한다. 값을 박싱하여 heap에 저장하고, stack에 해당 값의 주소를 저장하고 있다가 필요할 때마다 참조하여 쓰는 방식이다. 만약 참조하고 있는 값과 타입이 변경되어도, 기존의 참조를 제거하고.. 2024. 11. 4.
[C#] C#의 Collection C++에 STL이 있다면 C#에는 Collection이 있다고 할 수 있다. STL을 정리한 김에 Collection도 같이 정리하려 한다.컬렉션(Collection)이란?- 컬렉션은 동일 타입의 객체를 여러 개 보관할 수 있는 클래스를 말한다.- 배열, linked list, tree, hash table 등의 자료구조와 데이터 관리 및 조작을 쉽게 하기 위한 다양한 를 구현한 클래스이다.- C++의 STL의 Container와 같은 기능을 한다고 볼 수 있다.- 어떤 타입을 보관할 것인가에 따라 여러 namespace 안에 정의되어 있다.System.Collections(비제네릭 컬렉션) : 모든 타입을 obejct로 저장하여 다양한 타입을 혼합해서 사용할 수 있다. 타입 안정성이 좋지 않고, 값을 .. 2024. 11. 4.
[C++] C++의 STL C++로 알고리즘 문제를 풀다보면 자연스럽게 STL을 쓰게 되는데 이 STL이 어떻게 구성되어있는지 글을 정리해 보려 한다.STL이란?- STL은 Standard Template Library의 약자로, 여러 자료 구조, 함수, 알고리즘 등을 쓰기 쉽게 정형화하여 라이브러리화 해둔 것이다. - STL은 모두 컨테이너로 정의되어 있고 크게 4개의 라이브러리로 나뉜다.컨테이너 라이브러리(Container) : 자료구조를 사용할 수 있는 라이브러리로, 데이터를 저장하는 객체를 사용할 수 있다.반복자 라이브러리(Iterator) : iterator라 불리는 반복자가 정의되어 있는 라이브러리로, 컨테이너의 데이터 위치를 가리키는 포인터처럼 동작하는 객체이다.알고리즘 라이브러리(Algorithm) : 자주 사용하는.. 2024. 11. 3.
C# vs C++ 메모리 관리(GC)C++의 경우에는 포인터를 사용하여 메모리 할당 및 해제와 같이 메모리를 직접 제어하는 반면, C#은 Mark and Sweep 알고리즘을 기반으로 둔 가비지 컬렉터를 사용하여 자동으로 메모리를 관리한다. 이로 인해 C++에서의 생성 - 소멸 주기보다는 C#의 오버헤드가 크기 때문에 속도가 느려질 수 있다.구문C++과 C#은 서로 다른 구문을 사용한다. C++은 C와 유사한 구문을 사용하는 저수준 언어이고, C#은 Java와 유사한 구문을 사용하는 고수준 언어이다. 위에서 말했듯이, C++은 개발자가 직접 메모리로 작업할 수 있고, C#은 가비지 컬렉션 시스템을 이용하여 메모리 관리를 추상화한다. 또한, C#에는 문자열 조작 및 파일 I / O와 같은 일반적인 작업을 간소화하는 풍부한 .. 2024. 11. 2.
728x90