종로비트 C#
종로비트 C#
1.
Local Variable Type Inference
Object Initializers
Collection Initializers
Anonymous Types
Auto-Implemented Properties
Extension Methods
Lambdas
Query Expressions
Expression Trees
Partial Methods
2.
C# 3.0 New Feature
Implicitly Typed Local Variables( var )
C# var vs [ VB variant vs Javascriipt var vs C# object ]
- 다르다.
C# var은 Compiie-Time 에 Type에 type을 검사하고 type은 변할 수 없다.
하지만 나머지 형식은 Runtime시 type형식을 할 수 없으며 type이 변경될 수 있다.
사용 가능한 type
- built in type
- anonymous type
- user - defined type
- type defined in the .NET FCL
Type을 추정한다. (Interface)
- var temp =1 ; // int temp =1; 선언과 동일함
선언시 유의사항
var temp; //초기화 해야함
=============================
익명형식(Anonymous Types)
- 익명 형식의 이름을 컨트롤 할 수 없다.
- 항상 System.Object를 확장한다.
- 필드 및 프로퍼티는 항상 read-only이다.
- 이벤트, 커스텀 메소드 등을 지원하지 않는다.
- 항상 묵지적으로 selead이다.
(오버헤드 작업을 안하기 때문에 빠르다.)
- 항상 기본 생성자를 사용하여 생성된다.
자동구현속성(Auto-Implemented Properties)
- 로직이 없는 간단한 Property 생성시 유용
- e.g
public class Contact
{
public string Name{ get; set; }
public string Phone{ get; set; }
}
확장메소드( Extension Methods )
- 확장 메서드는 형식의 인스턴스 메서드인 것처럼 호풀할 수 있도록 형식과 연결될 수 있는 정적 메서드입니다. 이 기능을 사용하면 실제로 기존 형식을 수정하지 않고도 기존 형식에 새 메서드를 추가 할 수 있습니다.
람다식( Lanbda Expressions)
x=> f(x)
- ( input parameters ) => 표현식
- ( input parameters ) => {문장;};
e.g
List<Doctor> inchicago
쿼리식
from 아이템 이름 in 어디
Partial Method
- partial Method는 Partail Class 내에서만 선언 가능
- 반환타입은 void이어야 함
- 파라미터 제한자(modifier) 사용가능
(this, ref, params), 단 out 제한자는 사용 할 수 없음
- Partial Method는 항상 묵시적(implicitly)으로 private임.
{Func}, {Action} delegates
- {Func} Delegates
- {Action} Delegates
Named void M( int x, int y=5, int z=7){...}
M(1, 2, 3);
M(1, 2);
M(1);
M(1, z:3);
M(x:1, z:3);
M(z:3, x:1);
Named and optional parameters
PlLINQ
- Asarallel
- ParrallelEnumerable
Parallel.ForEach
TPL(Task Parallel Library)
Lazy
Lazy loading
- 팩토리패턴을 이용하여 객체를 사용한다.
그래야 사용을 위한 선언과 실제 객체가 생성되는 시점을 관리 할 수 있다.
- 한 번 생성된 객체는 이후에는 재사용 되므로 싱클톤 패턴을 띠고있다.
- 싱글톤 채턴의 유형을 따르므로 멀티스래드 프로그램 작성시에서는 동기화에 신경을 써야한다. 그렇지 않으면 의도 않은 결과를 가져 올 수 있다.
- 객체 초기화는 첫 요청(혹은 사용되어지는)이 일어나는 시점에 이루어진다.
- Thread Safe : DCL( double - checked locking )
Lazy<T> (System)
LazyInintializer (System.Threading)
LINQ
- Assembly : System.Core.dll
- Namespace
- LINQ to Objects
- IEnumerable<T>, IQureyable<T> interface가 구현된
주요 연산자
count 개수
Min 최소값
Max 최대값
Average 평균
집합 연산자
Concat 합집합
Union Union
Intersect 교집합
Except 차집합
정렬
OrderBy, ThenBy
OrderByDecending
ThenByDesceding
필터링
ㄷake 첫 n개를 가져옴
Skip 첫 n개를 제외한 데이터를 가져옴
TakeWhile 조건이 참인 동안 데이터
SkipWhile 조건이 참인 데이터를 제외한 나머지
Element
First, FirstOrDefalult ( 없으면 null반환 )
Last, LastOrDefault
Single, SingleOrDefault
ElementAt
DefaultIfEmpty // 서브집합이 없으면 null 반환
지연실행(Deferred Execution)
- 생성시에 쿼리에 실행되지 않고 데이터가 열거(MoveNext)될 떄 실행된다.
- into키워드
- at키워드
=========================================
4
Linq to SQL Architecture
application
//enumerate // objects // submitchanges()
Linq to sql
//sql query or sproc // rows // DML
SQL server
Agenda
entity framwork 개요
ef 4.1 주요 특징
- DbContext API
- DbContext
- DbSet<T
=========================================
XML
개요
System.Xml.Linq.XDcument
XDOM 생성 및 업데이트
- XElement와 XDocument
- XDocument
- 하나의 XElement를 가짐(root 요소)
- 하나의 XDeclation을 가짐
- 하나늬 XDocumentType을 가짐
- XElement
- 복수개의 XElement를 가짐
XNamesoace