Study/C#

종로비트 C#

Houkibosi 2012. 8. 4. 09:51

종로비트 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키워드


=========================================

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