프로그래밍 언어

    C# 부분 클래스 (partial)

    partial 키워드는 C#에서 부분 클래스를 지정한다, 장점으로는 여럿이서 하나의 프로젝트를 작업할 시 클린 코드를 유지할 수 있다는 점이다. 여러 책임이 있는 클래스가 있는 경우 각 클래스를 두 개의 구분자 클래스로 분할해야 한다. 부분 클래스를 사용하면 한 클래스의 정의를 여러 파일로 분할할 수 있다. 이 튜토리얼에서는 Person 클래스의 정의를 Person1.cs 및 Person2.cs 여러 파일로 분할한다. Person.cs using System; namespace partial_class { public partial class Person { private int id; private string name; public Person(int id, string name) { this.id ..

    C# 인덱서 (Indexer)

    인덱서는 인덱스를 이용해 객체 내의 데이터에 접근하게 해주는 프로퍼티이다. 인덱서를 선언하는 방법 class 클래스이름 { // 한정자 인덱서형식 this[형식 인덱스식별자] { get { // 인덱스식별자를 이용하여 내부 데이터 반환 } set { // 인덱스식별자를 이용하여 내부 데이터 저장 } } } 인덱서는 프로퍼티처럼 식별자를 따로 가지지는 않는다. 프로퍼티는 이름을 통해 객체 내의 데이터에 접근하지만 인덱서는 인덱스를 통해 객체 내의 데이터에 접근한다. 인덱서의 선언 예 인덱서를 통해 정수 형식 배열 array에 접근한다. 인덱서를 통해 데이터를 저장할 때 인덱스보다 배열의 크기가 작다면 배열의 크기를 인덱스에 맞춰 재 조정하는 코드이다. class MyList { private int[] a..

    C# 확장 메서드 (Extension Method)

    확장 메서드(MSDN 링크) 는 C# 3.0부터 추가된 기능으로 미리 정의된 형식에 사용자 정의 함수를 확장(추가)시키는 작업을 수행한다. 예로 들어서 string 형식에 Print라는 함수를 확장할 때 일반적인 경우라면 형식에 메서드를 추가하기 위해서는 해당 형식의 소스 코드가 필요하다. string 형식은 mscorlib (Multi-language Standard Common Object Runtime Library, 다국어 표준 공용 언어 런타임 라이브러리) 프로젝트에 포함되어 있으며, 변경 후에는 이 프로젝트를 다시 빌드하여 어셈블리를 만들어야 한다. 깃헙 링크 하지만, 확장 메서드를 사용한다면 해당 형식의 코드를 변경하지 않고 내 코드에서 어떤 형식이던지 메서드를 확장시킬 수가 있게 된다. 확..

    [SQL] 키(슈퍼키,대체키,후보키,기본키,외래키)

    * 키(Key)무언가를 식별하는 고유한 식별자(identifier) 기능을 한다. 즉, 데이터베이스에서 조건에 만족하는 관계의 행을 찾거나 순서대로 정렬할 때 다른 행과 구별할 수 있는 유리한 기준이 되는 속성의 집합이다.- 키의 종류로는 기본키, 슈퍼키, 후보키, 대체키, 외래키 등이 있다.1. 슈퍼키(Super Key)<p data-ke..

    C/C++ 연산자(Operator) 정리표 (비트, 논리, 산술 +=&^<<>>%~!)

    논리 연산자(Logical operator) 연산자(Operator) 의미(Description) 예제(Example) && 모두 같으면 true를 return (a-3) && b || 하나만 true 면 true를 return a >3 || b > 오른쪽으로 비트 이동, 빈 곳은 0 x>>5

    [SQL] DDL, DML, DCL 이란?

    DDL(Data Definition Language) - 데이터 정의어데이터베이스를 정의하는 언어이며, 데이터를 생성, 수정, 삭제하는 등의 데이터의 전체의 골격을 결정하는 역할을 하는 언어 이다.DML(Data Manipulation Language ) - 데이터 조작어데이터베이스에 등록..

    C# 리플렉션과 어트리뷰트 (Reflection and Attributes)

    리플렉션 C#에서는 프로그램 실행 도중에 객체의 정보를 조사하거나, 다른 모듈에 선언된 인스턴스를 생성하거나, 기존 개체에서 형식을 가져오고 해당하는 메소드를 호출, 또는 해당 필드와 속성에 접근할 수 있는 기능이다. 형식 메소드 설명 Type GetType() 지정된 형식의 Type 개체를 가져온다. MemberInfo[] GetMembers() 해당 형식의 멤버 목록을 가져온다. MethodInfo[] GetMethods() 해당 형식의 메소드 목록을 가져온다. FieldInfo[] GetFields() 해당 형식의 필드 목록을 가져온다. using System; using System.Collections.Generic; using System.Linq; using System.Text; using..

    C++ POD, 표준 레이아웃 타입, 간단한 타입

    POD (Plain Old Data) 메모리 상에서 연속적인 바이트 열이다. 다형성이나 유저가 정의한 복사 의미론 등과 같은 진보된 의미론 문법이 필요없을 때 개체를 POD로 취급해야 할 때가 있다. 왜냐하면, POD로 취급하면 하드웨어에서 좀 더 효율적으로 개체를 옮기거나 복사할 수 있기 때문이다. POD 개체는 다음 조건을 갖춰야 한다. 표준 레이아웃 타입(standard layout type)이어야 한다. 간단한 타입(trivial type)이어야 한다. POD가 될 수 있는 조건 복잡한 레이아웃을 갖지 않는다.(가상 함수 등) 유저가 정의한 복사 의미론을 갖지 않는다. 간단한 기본 생성자를 갖고 있다. 의 std::is_pod를 이용하면 쉽게 알 수 있다. 표준 레이아웃 타입 C와 분명하게 같은 ..

    C++ namespace와 using

    공동 작업 하다보면 네임스페이스로 나눠야 할 경우가 많다. namespace 네임스페이스 네임스페이스는 내부 식별자(형식, 함수, 변수 등의 이름)에 범위를 제공하는 선언적 영역이다. 네임스페이스는 코드를 논리 그룹으로 구성하고 특히 코드베이스에 여러 라이브러리가 포함된 경우 발생할 수 있는 이름 충돌을 방지하는 데 사용된다. 네임스페이스 범위에 있는 모든 식별자는 한정 없이 서로에게 표시된다. 네임스페이스 외부의 식별자는 각 식별자에 대해 정규화된 이름을 사용하거나, std::vector vec;단일 식별자에 대한 using Declaration(또는 네임스페이스using namespace std;(using std::string)의 모든 식별자에 대한 using 지시문을 사용하여 멤버에 액세스할 수 ..

    C# 전처리기의 모든것

    C 및 C++ 지시문과 달리, 매크로를 만드는 데는 해당 지시문을 사용할 수 없다. 전처리기 지시문은 한 줄에서 유일한 명령이어야 한다. Null 허용 컨텍스트 #nullable 전처리기 지시문은 null 허용 주석이 적용되는지와 null 허용 여부 경고가 지정되는지를 제어한다. 각 컨텍스트는 disabled 또는 enabled이다. 주석 및 경고 컨텍스트를 제어하고 프로젝트 수준 설정보다 우선으로 적용된다. 다른 지시문이 재정의할 때까지 제어하는 컨텍스트를 설정하거나 소스 파일의 끝까지 설정한다. 지시문의 효과는 다음과 같다. #nullable disable: null 허용 주석 및 경고 컨텍스트를 disabled로 설정한다. #nullable enable: null 허용 주석 및 경고 컨텍스트를 en..