마이크로소프트에서 개발된 객체 지향 프로그래밍 언어.NET Framework을 이용하여 프로그래밍하는 대표적인 언어윈도우/웹/게임/모바일 등 다양한 영역에서 활용 가능CC++과 다르게 xxx.h와 같은 헤더파일이 없다CVisual Studio를 사용해 C- .NET F
C1\. 로컬 변수: 메서드 안에서 선언 \- 해당 메서드 내에서만 사용 \- 메서드 호출이 끝나면 소멸 \- 기본값을 할당받지 못하므로 반드시 사용 전에 값을 할당2\. 필드: 클래스 안에서 클래스 내의 멤버들이 사용하는 전역적 변수 \- 클래스
일련의 동일한 데이터 타입 요소들로 구성된 데이터 집합인덱스를 통해 Element에 엑세스C1\. Rectangular 배열: 각 차원의 배열 크기가 고정된 다차원 배열 \- C의 , 와 같이 괄호안에 콤마로 분리2\. Jagged 배열: 각 차원의 배열 크기가
문자열(string)은 "이중부호", 단일문자(char)는 '단일부호'를 사용해 표현CC변수에 새로운 문자열을 할당하면 .NET 시스템은 새로운 string 객체를 생성하여 변수에 할당되고 기존 변수는 내부적으로 전혀 다른 메모리를 가리키게 된다문자열(string)은
enum은 열거형 상수(constant)를 표현하기 위한 것일반 상수 숫자들보다 의미있는 단어들로 표현해 가독성 증가별도의 지정이 없다면 enum의 각 요소는 0부터 선언한 순서대로 할당된다enum문은 클래스 안이나 네임스페이스 내에서만 선언될 수 있고 메서드나 pro
기본 연산자는 다른 프로그래밍 언어와 유사하다Null-coalescing operator, CA의 값이 NULL인경우 ?? B를 리턴하고, 아니라면 A를 리턴A가 Nullable 타입일때만 ?? 연산자가 지원된다출처: http://www.csharpstudy.
기본 반복문은 다른 프로그래밍 언어와 유사하다배열이나 컬렉션의 요소를 하나씩 꺼내와서 foreach 루프 내 블럭 실행성능 면에서 for문이 미세한 차이로 우세하나 foreach가 가독성 측면에서 이점이 많다특히 loop에서 가장 많이 사용하는 배열의 경우, 최적화를
yield키워드는 호출자(Caller)에게 컬렉션 데이터를 하나씩 리턴할 때 사용한다Enumerator(Iterator)와 같은 개념이며 집합적인 데이터셋으로부터 데이터를 하나씩 호출자에게 보내준다yield return컬렉션 데이터를 하나씩 리턴yield break리턴
C만약 Exception이 발생하였는데 프로그램에서 처리하지 않으면 Crash하여 종료된다try, catch, finally 키워드를 사용해 Exception을 핸들링한다throw 키워드를 통해 Exception을 생성해 발생시키거나 상위 호출자에게 예외 처리를 이임할
Value Type의 데이터형을 정의한다CValue Type은 상속될 수 없으며 상대적으로 간단한 데이터 값을 저장하는데 사용된다Reference Type의 데이터형을 정의한다클래스는 상속이 가능하고 상대적으로 복잡한 데이터와 행위들을 정의하는데 사용된다Value Ty
클래스는 Reference Type을 정의하는데 사용된다클래스에서 실제 행동을 일으키는 코드 블록동사 혹은 동사+명사의 형태로 네이밍클래스의 내부 데이터를 외부에서 접근할 때 사용클래스의 내부 데이터는 필드에 저장하게 되며, 필드들은 클래스 객체의 상태를 유지하는데 이
num은 Value Type인 int형이므로 NULL과 같이 어떤 값이 할당되지 않은 상태(missing value)를 가질 수 없다이때 num에 missing value를 할당하기 위해선 2가지 방법이 있다프로그램에서 사용되지 않을 것 같은 특정 값을 추정하여 할당(
클래스 내에서 일련의 코드 블록을 실행하는 함수N개의 파라미터와 1개의 리턴값을 가진다public, private와 같은 접근 제한자를 리턴 타입 앞에 명시할 수 있다C전달된 인자를 메서드 내에서 변경해도 메서드가 종료되면 전달되었던 인자값은 호출자에서 원래 값 그대로
클래스 내에 특정한 일(event)이 일어났음을 외부의 이벤트 가입자(subscriber)들에게 알려주며 일종의 필드처럼 정의된다이벤트에 가입하는 subscriber는 이벤트가 발생했을 때 실행할 이벤트 핸들러를 지정해야한다이벤트 핸들러는 이벤트에 += 연산자를 사용하
컴파일이 시작되기 전에 컴파일러에게 특별한 명령을 미리 처리하도록 지시C해당 파일 안에서만 효력을 발생한다만약 하나의 클래스가 두개의 파일에 나뉘어 Partial Class로 저장되면 두개의 파일에 각각 명시해야 한다C심벌을 정의할 때 사용정의된 심벌은 다른 전처리기
배열처럼 인덱스( )를 써서 클래스 객체의 특정 필드 데이터에 엑세스Indexer는 특별한 문법인 this\[]를 써서 클래스 속성처럼 get과 set을 정의한다클래스 디자인 시 클래스 내부의 어떤 데이터를 리턴하는지 정한다리턴 데이터 타입도 여러가지로 지정 가능하다입
외부로부터 타입(클래스, 구조체, 인터페이스, 델리게이트 등) 혹은 그 타입 멤버들(메서드, 속성, 이벤트, 필드 등)로의 접근을 제한할 때 사용public모든 외부(파생클래스 포함)에서 이 타입에 엑세스internal동일한 Assembly 내에 있는 다른 타입들이 엑
부모인 기준 클래스(Base Class)로부터 상속하여 자식인 파생 클래스(Derived Class)를 만들 수 있다상속을 하게 되면 부모 클래스의 데이터 및 메서드들을 자식 클래스에서 사용할 수 있다자식 클래스는 대개 부모로부터 물려받은 자원들 외에 자기 고유의 데이
인스턴스 메서드와는 달리 직접 클래스명.메서드명 형식으로 호출static 메서드는 인스턴스 객체로부터 호출될 수 없다non-static 필드는 인스턴스를 생성할 때 마다 메모리에 매번 새로 생성static 필드는 프로그램 실행 후 해당 클래스가 처음으로 사용될 때 한번
제네릭 타입에서는 int, float, double 같은 타입을 확정하지 않고 데이터 타입 자체를 타입 파라미터로 받아들이도록 클래스를 정의제네릭 타입을 사용할 때는 클래스명과 함께 구체적인 데이터 타입을 지정일부 상이한 데이터 타입 때문에 여러 클래스를 따로 만들 필
인터페이스는 클래스와 같이 메서드, 속성, 이벤트, 인덱서 등을 갖지만 이를 직접 구현하지 않고 단지 정의만 한다추상멤버로만 구성된 추상 Base 클래스와 개념적으로 유사클래스가 인터페이스를 가지는 경우 해당 인터페이스의 모든 멤버에 대한 구현(Impementation
메서드의 파라미터로 데이터(기본 타입이나 객체)가 아닌 메서드를 전달Delegate는 이렇게 메서드를 다른 메서드로 전달할 수 있도록 하기 위해 만들어졌다메서드의 입력 파라미터로 피호출자에게 전달될 수 있을 뿐만 아니라 메서드의 리턴값으로 호출자에게 전달될 수도 있다델
메서드의 파라미터와 리턴 타입이 동일한 것을 prototype이 일치한다고 한다delegate는 메서드 파라미터와 리턴 타입에 대한 정의를 한 후 동일한 prototype을 가지는 메서드를 서로 호환해서 불러 쓸 수 있는 기능이다delegate는 동일한 함수 proto
delegate는 클래스의 필드나 속성에 사용될 수 있다C\+= 연산자를 사용하면 메서드를 게속 delegate에 추가하게 되는데, 내부적으로 .NET MulticastDelegate 클래스에서 이 메서드들의 리스트(InvocationList)를 관리하게 된다복수개의
\+= 연산자 대신 = 연산자를 사용할 경우 InvocationList에 있는 모든 메서드를 지워버리고 새로 할당하는 메서드만 리스트에 추가delegate는 해당 클래스 내부에서 뿐만 아니라 외부에서도 누구든지 메서드를 호출하듯 해당 delegate를 호출할 수 있다위
C어떤 메서드가 일회용으로 단순하게 쓰인다면, 굳이 별도로 메서드를 정의하지 않아도 된다무명 메서드를 만들기 위해선 delegate 키워드와 함께 파라미터와 실행 문장 블록을 적는다메서드가 필요한 곳에 직접 delegate로 시작하는 무명 메서드를 써준다델리게이트 변수
C람다식은 무명 함수를 표현하는데 사용입력 파라미터 0~N개를 => 연산자 왼쪽에, 실행 문장을 오른쪽에 둔다입력 파라미터는 0개부터 N개까지 받을 수 있다람다식을 이용하면 delegate와 무명 메서드를 더 간략히 표현할 수 있다출처: http://www.c
C익명 타입은 읽기 전용이므로 값을 갱신할 수 없다C컴파일러는 익명 타입에 대해 내부적으로 임의의 클래스를 생성하여 사용한다공식적으로 클래스를 정의할 필요 없이 Type을 간단히 임시로 만들어 사용할 때 유용LINQ 사용 시 많이 활용된다출처: http://w
C확장 메서드는 클래스, 구조체, 인터페이스 등에 적용 가능일반적으로 인스턴스 메서드를 추가하기 위해서는 해당 클래스 안에 메서드를 추가한다하지만 어떤 경우에는 클래스에 직접 추가하는 것이 어려울 수도 있는데 이때 확장 메서드를 사용한다확장 메서드를 사용하면 클래스를
System.Linq.Enumerable 클래스는 LINQ 쿼리에서 사용되는 많은 확장 메서드들을 포함하는 클래스이다첫번째 파라미터는 이 메서드가 Ienumerable 인터페이스를 지원하는 모든 Type에 사용된다는 것을 의미한다두번째 파라미터는 Func라는 Deleg
CPartial 타입이 만들어진 이유는 Code Generator가 만든 코드와 사용자가 만든 코드를 구분하기 위함ASP.NET 웹폼에서 하나의 웹페이지를 만들 때, page1.aspx / page1.aspx.designer.cs / page1.aspx.cs 와 같이
Brace는 항상 라인의 처음에 위치한다블록 안에 단 하나의 문장만 있더라도 반드시 Brace를 붙인다단, get/set 속성을 짧게 정의하는 경우 { }를 한 라인으로 처리한다클래스나 변수, 메서드명을 지정하는 방법은 여러가지가 있다클래스, 메서드, 속성, 이벤트 명