반응형

foreach 반복문

foreach(object obj in list)

{

    DoSomthing(obj);

}

효과적이고 사용하기 쉬움


foreach문을 지원하는 타입

1. 기존타입(Array,List..)을 상속하여 사용

2. 새로운 타입 선언 가능 -> 인터페이스 구현


foreach를 지원하는 타입 정의(C#1.0)

IEnumerator e = list.getEnumerator();    // 특정 메소드를 선언하고 있다고 가정한다.

while(e.MoveNext())     // 다음 한 칸 이동하고 이동가능한지 리턴.

{

    object obj = e.Current;

    DoSomething(obj);

}

※ foreach를 지원하기 위해서는 다음 인터페이스를 구현하면 된다.

1. IEnumerable

public interface IEnumerable{

    IEnumerator GetEnumerator();

}

2. IEnumerator

public interface IEnumerator{

    object Current {get;}    // object로 되어 있기 때문에 boxing, unboxing필요...

    bool MoveNext();        // 어떠한 순서로 돌아가는 지 정의... 한가지 형태의 반복만 가능.

    void Reset();

}


※ yield return을 통해서 컴파일러 수준에서 Enumerator를 만들어준다.

public IEnumerator GetEnumerator()

{

    for(int i=0; i <  Cities.Length; i++)

    {

        yield return Cities[i];

    }

}


※ IEnumerable<string>와 같이 Generic을 이용하면 속도가 더 빠를 수 있다. boxing, unboxing없음.


Iterator 구문(2.0)

반복문 내부에서 yield 키워드 사용

C# 컴파일러가 iterator를 대신 구현해줌.

IEnumerable과 IEnumerator의 구체적인 구현 생략가능.

Generics 버전 인터페이스 : IEnumerable<T>, IEnumerator<T>


Iterator 주의사항

중첩 foreach문 사용자제 -> index를 이용한 for 반복문 사용 권장.

반응형

'C#' 카테고리의 다른 글

Nullable Type  (0) 2009.09.07
Generic  (0) 2009.09.07
Partial Class  (0) 2009.08.29
C# 3장 간단 정리  (0) 2009.07.30
C# 2장 간단 정리  (0) 2009.07.30
반응형

※ 일반적으로 Value타입은 null이 없음. Reference타입은 null은 있음.

※ 필요한 사전지식 : 값/참조형식의 의해

Nullable 타입

Value타입(값 형식)에 NULL값을 설정할 수 있다는 새로운 형태의 Value타입(값 형식)

예) int i = null;

나오게 된 배경

Database 시스템과 프로그래밍 언어의 자료처리의 차이점

Database 

모든 필드는 제약조건의 설정에 따라 null일 수 있다.

OOP 언어

데이터 타입은 값 형식과 참조 형식으로 구분됨.

값 형식은 null을 가질 수 없고 기본 값을 가짐.

참조형식은 null을 가질 수 있음.


데이터조회 예시

C#1.0의 예시

int iAge;

...

if( !dbReader.IsDBNull(dbReader.GetOrdinal("Age")) )

   iAge = System.Convert.ToInt32(dbReader["Age"]);

else

    iAge = ???; // 실제 DB에 값이 null일 경우? 보통 -1로 표현하기도 함.

C#2.0

int? iAge;

if( !dbReader.IsDBNull(dbReader.GetOrdinal("Age")) )

   iAge = System.Convert.ToInt32(dbReader["Age"]);

else

    iAge = null; // 값에 null을 표현 가능하다!


int otherValue = iAge ?? 0;  // null이면 0으로 할당.


주의사항

값 형식에만 사용.

예시)

string? Message = "Hello, World!"; // compile error

MyClass? myClass; // compile error

형변환

int? x = null;

int y = x;          // compile error

int y = (int)x;    // null일 경우 Runtime Error!! -> InvalidOperationException

int y = x.Value; // null일 경우 Runtime Error!! -> InvalidOperationException

int y = x ?? 0;   // 좋은 선택~


타입 정의방법

int i;

System.Int32 i = 0; // Common type system(CTS) 여러 언어에 대해...

int? x1 = 123;

System.Nullable<int> z1 = 10;    // CLR 타입. 타입 제약조건으로 값형식만 받을 수 있다.


if(i1==null) i = 0; else i = (int)i1;   // i1.HasValue를 이용할 수 있음.


값 형식과의 연산

int? i3 = null;

int? j3 = i3 + 100; // 결과는 null, null+-의 결과는 null

null에 대한 출력값은 '빈 문자열'이다.


Nullable 타입 실제 구현 예시

struct MyNullable<T> where T:struct

{

    public T value;

    private bool IsNull;

    public bool HasValue

    {

        get

        {

            return !IsNull;

        }

    }


선언방법

선언 : T?

System.Nullable<T>

null 할당 가능 int? x = null;

null 확인

int? x;

...

if(x.HasValue) or if(x!=null)

?? Operator

int? x;

int y = x ?? 0;

값 형식과의 연산

int? x;

int? y = x + 1; // x가 null이면 y도 null

반응형

'C#' 카테고리의 다른 글

Iterator  (0) 2009.09.07
Generic  (0) 2009.09.07
Partial Class  (0) 2009.08.29
C# 3장 간단 정리  (0) 2009.07.30
C# 2장 간단 정리  (0) 2009.07.30
반응형

Generic(제너릭)

사전적 정의 : 일반적인, 포괄적인, 통칭의, 범용


screwdriver set as a generic tool

※ (드라이버 꼭지)를 바꿈으로서 다양하게 사용할 수 있다.


※ Professional .NET 2.0 Generics이라는 책이 존재할 정도로 방대한 분야.


장점

Type checking, boxing, casting 등의 작업 불필요 => 성능 향상

사용 용도

Custom List, Collection 등을 쉽게 구현


object List 정의

public class List

{

    private object[] elements;

    private int count;


    public void Add(object element){ ... }

    public object this[int index]{ get... set... }

    public int Count { get... }

}


object List 사용 예시

List intList = new List();

intList.Add(1);           // boxing 실행됨.

intList.Add(2);

intList.Add("Three");  // 이후에 Runtime시 잠재적 에러 가능성. (배열 형태기 때문에)

int i = (int)intList[0];   // 형 변환 필요.


요소의 타입이 object인 List 클래스

Type Casting 필요

에러 발생시 run-time 에러

값 형식이 저장되면

boxing/unboxing 호출됨 -> 성능 저하

※ 범용적으로 사용될 수 있으나 최선의 방법은 아니다.


C# 1.0 해결책

Strong Typed List 생성

 - intList, stringList, myClassList

문제점 

각각의 타입마다 코드생성 -> 관리의 어려움

각각의 코드는 상당히 유사함


C# 2.0 해결책

코드상 generic

정의(define) : 특정 logic을 구현하는 것. 함수 정의, 클래스 정의 등.

코드의 사용(reference) : 구현된 로직을 사용.

List, Collection, Queue, Stack 등의 모든 자료 구조에 적용가능.


Generic type 정의

public class List<T>

{

    private T[] elements;

    private int count

    public void Add(T element){ ... }

    public T this[int index] { ... }

    public int Count{ ... }

}

Generic type 사용

List<int> intList = new List<int>();

intList.Add(1);               // boxing 발생하지 않음.

intList.Add(2);

intList.Add("Three");      // 컴파일 에러 발생

int i = intList[0];            // 형변환 필요없음.

※ int가 type parameter에 대입되는 효과를 가진다.


T = type parameter

T는 타입 자리에 들어간다. 

클래스 부분에 <T>라고 써 준다.

※ Generic으로 만들어진 코드는 사용하면서(reference) 완성된다.


예시)

void swap<T>(ref T a, ref T b)

{

    T c;

    c = a;

    a = b;

    b = c;

}


type parameter에 대해 constraint 적용이 가능하다.

예시)

void swap<T>(ref T a, ref T b) where T:struct

object에 대해 적용 안되며 일반 타입에 대해서만 적용되는 함수를 만든다.


정의

코드의 특정부분을 구체적으로 정의(define)하지 않고 사용(reference)하는 것

적용 코드 부분 : class, interfaces, method

특정부분(정의하지 않는 부분)

<T> : Type Parameter

코드 정의 : type은 <T>와 같이 일반적(Generic)으로 정의

코드 사용 : 명시적 <T>를 정의


Framework에 정의되어 있는 Generic 코드

Collection classes

List<T>, Dictionary<TKey, TValue>, SortedDictionary<TKey, TValue>, Stack<T>, Queue<T>, LinkedList<T>

Collection interfaces

IList<T>, IDictionary<TKey, TValue>, ICollection<T>, IEnumerable<T>, IEnumerator<T>, IComparable<T>, IComparer<T>

Collection base classes

Collection<T>, KeyedCollection<T>, ReadOnlyCollection<T>

Utility classes

Nullable<T>, Comparer<T>

Reflection


장점

타입 안정적(=strong typed) : No more object~ 

성능향상 

Object안에 Integer를 넣었을 때 Generic이 3배 빠름.

Object안에 String를 넣었을 때 Generic이 20% 빠름.

효율적인 코드관리

코드 재사용 

polymorphism : interface, class override, delegate, generic

IDE Tools 지원


실제 코드의 완성은 사용(refererence)하면서 됨.

CLR 기능

runtime시 동작

VB.NET, C++.NET등의 언어에서도 지원

C++의 탬플릿과 개념은 유사하나 기능상으로 많이 다름.

자바의 Generic은 Boxing/Unboxing이 항상 수행된다는 점에서 .NET버젼이 더 우수하다.


반응형

'C#' 카테고리의 다른 글

Iterator  (0) 2009.09.07
Nullable Type  (0) 2009.09.07
Partial Class  (0) 2009.08.29
C# 3장 간단 정리  (0) 2009.07.30
C# 2장 간단 정리  (0) 2009.07.30
반응형

Partial classes

Generics

Nullable types

Iterators

//Anonymous types

//static classes

//different accessibility for property accessors

//External Aliases

//Namespace Alias Qualifiers

//Inline Warning Control

//...


Partial classes

하나의 클래스 -> 두 개 이상의 파일에 분리되어 존재가능

public partial class Customer

{

}


소스 컨트롤 : 파일 단위로 checkin, checkout함.

하나의 클래스를 여러 명이 작업해야 한다면?

하나의 클래스를 개발자수만큼 분리 후 컨트롤.

Code Generation : 툴이 생성한 코드와 개발자 코드의 분리.

예시)

Form1.cs과 Form1.Designer.cs partial 형태 두개로 나누어 놓았음


예시) 개발자 코드가 추가되면 안되는 코드

디자이너 코드

웹서비스 프록시 코드

Typed DataSet(xsd)


Partial classes 특징

CLR 수준이 아닌 C# compiler 수준의 기능.

실제 컴파일시에는 하나의 클래스로 인식.

단일 코드로 취합되므로 모든 제약사항은 이에 준함.

 - Base class : 모든 patrial 클래스는 같은 상위 클래스를 상속받아야 함.

 - Attribute, Interface 등도 동일한 개념.

binary 수준에서 partial이 허용되지 않는다. 소스코드 수준에서 partial 가능.


Patrial classes 용도

소스 컨트롤

Tool이 생성한 코드에 사용자 코드 추가.


무분별한 partial 클래스의 사용

코드의 관리를 어렵게 할 수 있다.

하나의 클래스 -> n개의 소스 파일


클래스뷰의 적절한 사용

partial의 유무와 관계없이 일관된 클래스 정보 표시.


반응형

'C#' 카테고리의 다른 글

Nullable Type  (0) 2009.09.07
Generic  (0) 2009.09.07
C# 3장 간단 정리  (0) 2009.07.30
C# 2장 간단 정리  (0) 2009.07.30
C# 1장 간단 정리  (0) 2009.07.30
반응형

Main() 메소드 : 응용 프로그램의 진입점.

※ Main()진입점이 여러개면 /main 플래그를 사용하거나 속성->시작 개체를 설정해야 한다.

static : 클래스의 범위에 있으므로 바로 호출할 수 있는 메소드

Console.WriteLine() : 텍스트 문자열을 표준 콘솔에 찍는다.


Main()의 3가지 signature

public static void Main(string[] args);

public static void Main();

public static int Main(string[] args);


System.Array의 Length 속성을 이용하면 배열의 개수를 셀수 있다.

foreach(string s in args)

와 같은 for문도 사용할 수 있다.


※ C#은 garbage collection이 가능하기 때문에 delete 키워드를 지원하지 않는다.


클래스 멤버 변수에는 자동으로 기본 값이 할당된다.

지역 변수에는 '출력' 매개변수로 기능하는 지역변수를 제외하고 초기 값을 할당해야 한다.


Console.Write() : Carriage Return 없는 텍스트 문자열을 표준 콘솔에 출력

Console.ReadLine() : Carriage Return 전까지 쌓인 입력 스트림으로 부터 정보를 얻음.

Console.Read() : 하나의 문자를 읽어옴.


포멧 지정자(placeholder) : {0}, {1}, {2}

WriteLine()은 객체 배열을 포맷 지정자로 지정할 수 있도록 오버로드 되어 있어 개수 제한 없이 항목 추가가 된다.


문자열 포멧 지정 플래그

{0:C} 같은 형식으로 사용

C : 통화(Currency) 포멧. local culture 기호를 앞에 붙인다. (\같은)

D : 10진수(Decimal) 포멧

E : 지수(Exponent) 표현

F : 고정 소수점(Float) 포멧

G : 일반(General), 고정 소수점 혹은 지수 포멧에 사용한다.

N : 기본 숫자 포멧

X : 16진수 포멧 지정.


값 형식과 참조 형식

값 형식 : 간단한 데이터 형식, 구조체

참조 형식 : 클래스

참조 형식에 대해 깊은 복사를 하기 위해서는 IClonable 인터페이스 구현 필요.

 질문 값 형식   참조 형식
 할당되는 곳 스택   관리힙
변수는 어떻게 나타내는가   local 복사본 할당 인스턴스에 의해 점유된 메모리 
 기본 형식  System.Value에서 파생 sealed 형식이 아니면 모든 형식으로부터 파생 가능. 
 다른 형식의 기본 형식이 될 수 있는가? 없다. 값 형식은 항상 sealed되어 있어 확장 불가  sealed되지 않았으면 다른 형식의 기본형식 가능 
 매개변수 전달 방식? 값으로 전달  참조로 전달 
 Object.Finalize()재정의 불가능  간접적으로 가능. 
 생성자 정의 가능. 기본생성자는 예약됨.  가능 
 소멸시기 scope를 벗어날 때  garbage collect될 때 


System.Object

Equals() : 메모리 상에 동일한 항목을 가리키면 true. 

(재정의)일반적으로 비교되는 객체들의 내부 상태 값이 동일한 경우 true를 리턴.

GetHashCode() : 특정 개체 인스턴스를 식별할 수 있는 정수 반환

GetType() : 현재 참조형식을 자세하게 설명하는 객체 바환

ToString() : "namespace.classname' 형태의 문자열 반환

Finalize() : 객체가 힙으로부터 제거될 때 런타임에 의해 호출되는 메소드

MemberwiseClone : 멤버대 멤버로 복사된 새로운 객체 반환(얕은 복사)


System.Object 정적 멤버

object.Equals(), object.ReferenceEquals()


모든 C# 데이터 형식은 System namespace에 정의되어 있다. (밑은 별칭)

sbyte, byte, short, ushort, int, uint, long(64bit), ulong, char, float, double, bool(true,false), decimal(10^0~10^28), string(유니코드 문자집합), object


※ StringBuilder : 자바의 StringBuffer와 비슷한듯.


boxing과 unboxing

boxing : 명시적으로 값 형식을 이에 상응하는 참조 형식으로 변환하는 과정 <=> unboxing

※ unboxing시 데이터 형식이 box된 형식과 일치하는 지 검사하고 일치하면 복사가 진행됨. (InvalidCastException 발생 가능)

※ C# 클래스는 필요할 때 boxing, unboxing을 수행한다.


const : 자바의 static final 과 비슷한 의미. 값이 컴파일 시간에 계산된다. 고정되고 변경할 수 없는 값.


foreach (변수타입 변수명 in 배열)

배열 반복 처리 뿐만 아니라 시스템 컬렉션이나 사용자 지정 컬렉션도 반복 처리 가능.


C# 흐름 제어 구조

자바처럼 Boolean 표현식에만 반응한다.


메소드 접근 한정자

public

private

protected

internal : 해당 어셈블리 내에 있는 모든 형식에서 접근 가능하게 정의

protected internal : 메소드 접근이 현제 어셈블리나 파생된 형식으로 제한한다.


메소드 매개변수 한정자

COM의 attribute와 비슷

(없음) : in attribute와 비슷

out : 출력 매개변수는 호출된 맴버에 의해 할당된다.

ref : [in,out] attribute와 유사. 값은 호출자에 의해 할당. 메소드는 호출 범위 안에서 재할당 가능.

params : 여러 개의 매개변수를 한 매개변수처럼 보낼 수 있다.


out 매개변수 예시

※ 초기화 될 필요가 없다.

public static void add(int x,int y, out in ans)

{

    ans = x+y;

}


int ans;

Add(90,90, out ans);

Console.WriteLine("90 + 90 = {0}", ans);


ref 매개변수

※ 반드시 초기화 되어야 한다.


참조형식을 값, 참조 형식으로 전달하기

참조형식 -> 값으로 전달 : 객체 상태 데이터는 변경 가능. 다른 객체를 참조하도록 변경되지 않음.

참조형식 -> 참조로 전달 : 상태데이터, 다른 객체를 참조하도록 변경됨.


배열

크기가 고정된 배열을 생성할 때 new 필요.

배열에 데이터를 넣으려면 index연산자 이용. (bookOnPl[0] = "haha"; )

중괄호 사용 가능.

 - int[] ages = {20,22,23,0}

 - string firstnames = new string[5]{"Steve", "Gina", "Swallow",'Baldy","Gunner"};


System.Array 기본클래스

162P 참조


문자열 조작하기 

164p참조

+ = Concat() 동일하다.

C#에서도 escape 문자 (\t, \\, \n, ...) 사용 가능.

@를 통해 적힌 문자열 그대로 출력 가능.


StringBuilder

MFC의 CString이나 COM의 CComBSTR과 유사.

Append메소드.


열거형

0부터 시작, 혹은 프로그래머 마음대로 다른 번호 부여 가능.

암시적으로 System.Enum에서 파생.


네임스페이스 별칭 사용하기

using The3DHexagon = My3DShapes.Hexagon;

using 별칭 = 원래네임스페이스.클래스;

반응형

'C#' 카테고리의 다른 글

Nullable Type  (0) 2009.09.07
Generic  (0) 2009.09.07
Partial Class  (0) 2009.08.29
C# 2장 간단 정리  (0) 2009.07.30
C# 1장 간단 정리  (0) 2009.07.30
반응형

csc 컴파일러

/t(artget):exe (디폴드) : 파일 출력을 어떻게 할건지 결정. exe, library, module, winexe

/out (생성될 출력 파일 이름)

/r(eference):?.dll;?.dll... : 참조된 네임스페이스가 어떤 어셈블리에 포함되었는 지 알려준다.

/bugreport:bugs.txt : 빌드와 관련한 다양한 자료와 컴파일 과정 에러 정보를 얻을 수 있다.

57페이지에 기타 옵션 참고


지시파일(response 파일)

컴파일 시 사용하는 모든 명령어를 적어놓을 수 있는 파일(*.rsp)

csc @?.rsp

같은 옵션이 있을 때 뒤에 옵션으로 재정의된다.

기본 지시파일 : csc.rsp


명령중 디버거(cordbg.exe)

소스를 보기 위해서는 컴파일 할 때 /debug 옵션이 필요하다.

※ Visual Basic 6.0 응용 프로그램을 만드는 것은 VS .NET에서 할 수 없다.


C# 프로젝트 형식

윈도우즈 응용프로그램, 클래스 라이브러리(dll), 윈도우즈 컨트롤 라이브러리(windows forms, activeX와 비슷)

ASP .NET 웹 응용 프로그램, ASP .NET 웹 서비스, 웹 컨트롤 라이브러리, 콘솔 응용 프로그램, 윈도우즈 서비스


VS .NET의 주요 기능

서버 탐색기 창 : 보기-> 서버 탐색기

로컬 또는 원격 데이터 베이스에 붙어 작업 가능.

메세지 대기열, 머신에 대한 일반 정보 볼 수 있음.


개체 브라우저

보기 -> 개체 브라우저

네임 스페이스, 형식, 해당 솔루션이 참조하고 있는 각 어셈블리의 형식 멤버를 볼 수 있다.


C# 전처리기 

#define, #undef : 조건부 컴파일 기호를 정의하거나 해제하는 데 사용

#if, #elif, #else, #endif : 소스 일부를 조건적으로 건너뛰는데 이용

#line : 에러와 경고의 줄 번호를 제어

#error, #warning : 해당 빌드에 대한 에러와 경고 생성

#region, #endregion : 소스 코드 일부를 명시적으로 표시하는 데 이용(확대 및 축소)

디버그 모드에서만 컴파일 되는 예시

#define DEBUG // 가장 처음에 작성.

...

#if (DEBUG)

#warning 경고! Debug가 정의되어 있음. 릴리즈 빌드로 구성하시오.

...

#endif


#line 3000

// 3000번으로 line이 바뀜.


System.Environment 클래스

다양한 정적 멤버를 통해 운영체제 context 관련 여러 세부사항을 알 수 있다.


반응형

'C#' 카테고리의 다른 글

Nullable Type  (0) 2009.09.07
Generic  (0) 2009.09.07
Partial Class  (0) 2009.08.29
C# 3장 간단 정리  (0) 2009.07.30
C# 1장 간단 정리  (0) 2009.07.30
반응형

.NET 구성요소

CLR

공용 언어 런타임

자동 메모리 관리, 언어 통합, 형식 안전성 보장

mscoree.dll 또는 common object runtime execution engine



CTS

공용형식 시스템

런타임에 지원되는 프로그래밍 구조, 데이터 형식

상호작용 -> 어떻게 메타 데이터에 나타나는지.

CLS

공통 언어 사양

언어가 호응할 수 있는 프로그래밍 구조와 공용 형식들을 정의

모든 언어에 의해 동일한 방식으로 접근될 수 있는 코드 생성을 위한 지침서.

※ 규칙 1 : 형식이 정의된 어셈블리 외부로 '노출된' 부분에만 적용.



C#이 가져온 것

포인터 없음.

자동 메모리 관리

열거, 구조체, 클래스 속성도 공식 문법 구조

사용자 지정 연산자 오버로딩 가능.

인터페이스 기반 프로그래밍 기술 완벽 지원

어트리뷰트를 이용한 aspect 기반 프로그래밍 기법 지원


.NET 바이너리

IL + 메타데이터(항상 존재, 컴파일러에 의해 자동 생성)로 구성

IL : 플랫폼에 무관한 중립 명령어

자바의 바이트 코드와 유사

 *. COM 형식 정보의 문제점 

   - 존재가 보장 안됨.

   - IDL 코드가 포함된 Coclass의 올바른 동작을 위해 필요한 외부 참조 서버의 목록을 만들 방법이 없음.

   - IDL이 내부의 형식들을 정확히 반영하는 지 프로그래머가 직접 일일히 확인해야 한다.

manifest 

어셈블리 현재 버젼 정보

리소스를 지역화하는 데 사용되는 culture 정보

모든 외부 참조 어셈블리 목록


단일 파일 어셈블리

CIL 메타데이터 manifest가 모두 한 파일에

다중 파일 어셈블리

여러개의 닷넷 바이너리로 구성.

주 모듈에는 manifest가 있어야 한다.


※ signature : 메소드의 식별 가능한 특성을 나타내기 위한 일련의 모든 정보

 - 메소드 이름, 반환 형식, 인수 개수, 데이터 형식, (호출 규칙)


.NET 형식 메타데이터의 역할

binary 안에 정의된 모든 형식(클래스, 구조체, 열거형 등)

형식의 멤버들(속성, 메소드, 이벤트 등)에 대한 설명

.NET manifest : 외부 참조 어셈블리에 대한 설명

자가 기술적(self-descriptive)인 어셈블리


JIT : CIL을 의미있는 CPU 명령어로 컴파일 하는 것

jitter라고도 불린다. (대상 OS에 맞는 방식으로 메모리에 캐싱)


sealed class?

인터페이스 : 추상 멤버 정의를 모아 놓은 것.

열거형 : 사용자 지정 열거형도 가능 { 위저드 5 100, ... }

delegate : C스타일의 함수포인터와 비슷

형식멤버 : 생성자, 중첩형식, 연산자, 메소드, 속성, 필드, 상수, 이벤트 등


※ widget : 응용 프로그램과 상호 작용하는 데 이용되는 GUI 요소, 아이콘, 버튼, 체크박스, 스크롤바, 창, 토글 단추, 폼 등


ildasm.exe : IL 어셈블러. mscorlib.dll

※ ctor : 생성자

파일 / 트리뷰 덤프 : 텍스트 파일로 .NET 어셈블리를 볼 수 있음.


wincv.exe

클래스 뷰어


.NET 런타임 배포하기

http://www.microsoft.com에서 Dotnetfx 다운로드 가능


다른 운영체제에서 .NET 실행

http://www.microsoft.com : Shared Source Common Language Infrastructure

http://msdn.microsoft.com/net/ecma

http://www.go-mono.com


반응형

'C#' 카테고리의 다른 글

Nullable Type  (0) 2009.09.07
Generic  (0) 2009.09.07
Partial Class  (0) 2009.08.29
C# 3장 간단 정리  (0) 2009.07.30
C# 2장 간단 정리  (0) 2009.07.30

+ Recent posts