본문 바로가기

C#

(12)
[C#] LINQ LINQ Language Integrated Query. C# 3.0부터 추가가 되기 시작한 문법으로, C# 언어에서 쿼리 기능을 사용하는 것. 기본적으로 람다 표현식을 사용하여 간결하고 가독성 좋게 작성 가능하다. LINQ는 SQL의 문법을 가지고 다양한 쿼리를 통해 데이터를 가공하고 집계하는 등에 사용된다. 전통적인 방식으로 for과 if문을 가지고 특정 데이터들을 가공하고 집계내는 것도 가능하지만, LINQ를 이용하면 빠르고 정확하게 데이터를 찾는 것이 가능하다.
[C#] DataSet, DataTable, DataRow C#에서는 DB데이터나 엑셀 데이터 등을 한번에 테이블 형태로 관리할 수 있다. 큰 흐름을 보자면, DataRow -> DataTable -> DataSet 인데, DataRow는 데이터가 모인 한 열(레코드)이라고 생각하면 되고, 열(레코드)이 모인 집합체를 DataTable이라고 생각하면 되고, Table이 모인 것이 DataSet이라고 생각하면 된다. 레코드의 집합이 테이블, 테이블의 집합체가 스키마듯이 C#에서도 DataRow의 집합체가 DataTable이고, DataTable의 집합체가 DataSet이라고 생각하면 된다.
[C#] ?. ?? 연산자 ?. 연산자 Null이 아니라면 참조하고 Null이라면 Null로 처리 하라는 뜻 ?? 연산자 Null이 아닌 경우 왼쪽 피연산자의 값을 반환한다. 그렇지 않으면 오른쪽 피연산자의 값을 평가하고 그 결과를 반환한다.
[C#] delegate delegate 대리자라는 의미, 메소드에 대한 참조를 갖는 형식 public class DelegateTest { // 대리자 생성 // 매개변수가 없고 반환타입이 void인 메소드만 참조 가능 delegate void Delegate(); /* static void Main() { // 대리자 객체 생성 Delegate myDelegate; // Print 메소드 참조 myDelegate = Print; // 대리자를 이용한 메소드 호출 myDelegate(); // 메소드를 참조하는 형식 // 1. myDelegate = new Delegate(Print); // 2. myDelegate = Print; // 3. myDelegate += Print; } */ public static void Pr..
[C#] Parse, TryParse, Convert Parse 문자열 표현을 해당하는 형으로 변환한다. ToString()과 비슷한 표현. string str = String.Empty; try { int result = int.Parse(str); Console.WriteLine(result); } catch (FormatException e) { Console.WriteLine(e.Message); } // '' 파싱 불가 // 예외 발생 Convert 기본 데이터 형식을 다른 기본 데이터 형식으로 변환한다. Boolean, Char, Byte, Double, String, DateTime 등의 형식들을 지원한다. string 타입을 int 타입으로 바꿀 수 있는 값들은 변환이 잘 되지만, 정수가 아닌 실수형이거나, 숫자가 아닌 문자열이 할당되어 있다..
[C#] 제네릭 generic 제네릭(generic) 제네릭이란 데이터의 타입을 일반화(generalize) 한다는 것을 의미한다. 제네릭은 클래스나 메소드에서 사용할 내부 데이터 타입을 컴파일 시에 미리 지정하는 방법이다. 이렇게 컴파일 시에 미리 타입 체크를 수행하면 다음과 같은 장점을 가진다. 1. 클래스나 메소드 내부에서 사용되는 객체의 타입 안정성을 높일 수 있다. 2. 반환값에 대한 타입 변환 및 타입 검사에 들어가는 노력을 줄일 수 있다. 'T'를 타입 변수(type variable)라고 하며, 임의의 참조형 타입을 의미한다. 꼭 'T' 뿐만 아니라 어떠한 문자를 사용해도 상관없으며, 여러 개의 타입 변수는 쉼표(,)로 구분하여 명시할 수 있다. 제네릭의 제거 시기 코드에서 선언되고 사용된 제네릭 타입은 컴파일 시 컴파일..
[C#] 확장 메소드 Extension Method 확장 메소드 C#은 상속 하지 않고도 이미 만들어진 클래스에 새로운 메소드를 추가할 수 있는 방법을 제공하며, 이를 확장 메소드(Extension method) 기법이라고 한다. 확장 메소드 기법을 사용하기 위해서는 아래 규칙을 순서대로 지켜야 한다. 1. 확장 메소드들을 정의할 클래스를 static으로 선언한다. 2. 정의한 클래스 내부에 확장하고 싶은 메소드를 static으로 선언한다. 3. 첫 번째 파라미터로 메소드가 포함되어질 클래스를 this 포인터와 같이 적어준다. 4. 그 뒤로는 메소드가 요구할 나머지 파라미터들을 순서대로 적어준다. 확장 메소드는 정적 메소드처럼 정의하되, 첫 번째 매개변수에는 어떤 형식의 확장 메소드인지를 결정하게 된다. 기존 정의된 메소드와 동일한 이름을 갖는 확장 메소..
[C#] 접근 제한자 Access Modifier 접근 제한자 (Access Modifier) 접근 한정자라고 불리기도 하며, 타입의 범위 뿐만 아니라 멤버의 접근 범위를 정의하는 데 사용되는 기술. 클래스 또는 클래스의 멤버의 접근 가능 여부는 접근 제한자에 의해 정의된다. C#의 5가지 접근 제한자 1. private 2. public 3. protected 4. internal 5. protected Internal 접근 제한자 클래스 내부 외부 클래스 파생(자식) 클래스 프로젝트 public ○ ○ ○ ○ protected ○ ○ internal ○ ○ ○ private ○ protected internal ○ ○ 어셈블리는 하나의 단일한 단위로 존재하는 .NET의 실행 가능한 프로그램 또는 실행 프로그램의 일부이며 실행 및 배포의 단위라고 할 ..