블로그 이미지
Kanais
Researcher & Developer 퍼즐을 완성하려면 퍼즐 조각들을 하나 둘씩 맞춰나가야 한다. 인생의 퍼즐 조각들을 하나 둘씩 맞춰나가다 보면 인생이란 퍼즐도 완성되는 날이 오려나...?

calendar

1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31

Notice

05-10 16:06

Recent Post

Recent Comment

Recent Trackback

Archive

2015. 5. 11. 16:28 Programming/.NET

작성날짜    : 2011-03-24


형식

 

Value 형식

Reference 형식

Int i = 2;

Int j = I;

Stu s = new Stu();

Stu s2 = s;

 

값 형식

Int, double, char, bool 등등

개채를 참조하고 있는 것이고,

동일한 개체를 참조하는 것.

 

Class

 

구조체(int, double 등도 해당)

내부에 멤버필드, 멤버 메소드가 있다.

 

열거형

 

Stack에 할당

Heap(Managed)에 할당

관리화 힙

둘 다 object 기반

모든 형식의 최상위 클래스가 object

Tostring, equal, equalto 등등 제공

 

Statement 구문

선언문

int i;

i = i+2;

 

조건식에 올 수 있는 것은 bool 형식이여야한다.

int i =2;

if(i) << 안됨.

if(i != 0이렇게 써야함.

 

switch문에서  하나의 case당 break;가 꼭 있어야 한다.

For, while문은 똑같음.

 

int[] arr = new int[4];

        arr[0] = 1;

        arr[1] = 2

        arr[2] = 3;

        arr[3] = 4;

 

        foreach(int i in arr)

        {

            Console.WriteLine("{0}",i);

        }

 

foreach문은 내부적으로 IEnumerator 인터페이스를 파생 받고 있다.

Enumerator (열거자)

 

try

{

   

}

catch(Exception e)

{

}

finally

{

}

 

 

캡슐화

 

캡슐화 할 수 있는 형식

 

필드, 상수, 속성.

메서드, 이벤트, 연산자

인덱서, 생성자, 소멸자

중첩 형식

 

필드

int num = 8;

const int snum = 7// const는 묵시적으로 static.

//묵시적 : 코드에 표시하지 않았지만 그와 같은 형식을 가지고 있다.

//const는 클래스 멤버이다.

//static 키워드를 사용할 수 없다.

//const 멤버의 초기화 : 프로그램 시작할때 할당 된다.


readonly int rnum; // 상수화

//생성자에서는 바꿀수 있지만, 다른 곳에서는 바꿀 수 없다.

// 런타임시에 값이 확정된다.


readonly Eye eye;

// 클래스 멤버는 const로 명시할 수 없다. value 형식만 가능하다.

// const는 프로그램이 시작할 때 할당 되고, 클래스는 런타임시 확정되므로 클래스 멤버는 const로 명시 할 수 없다.

       

static readonly srnum; // const 효과..

Stu()

        {

            rnum = 7;

        }

 

속성

public int Num

        {

            // 내부적으로 제공.. 프로퍼티라 함.

            get

            {

                return Num;

            }

// .NET Assembly에는 void Set_Num(int value) { num = value; } 라 되있음

            set                 

{

                Num = value;

            }

        }

 

  

연산자

// C++에서는

        bool operator == (int n)

        {

            return num == n;

        }

 

        if(*s == 7)

        {

        }

 

        static bool operator == (Stu s, int n)

        {

            return s.num = n;

        }

 

        Stu s = new Stu();

        s.num = 3;

        if3 == s.num)

        {

        }

 

class LectureRoom

    {

        Stu[] arr = new Stu[50]; // 보관할 수 있는 인스턴스 50개를 생성.

 

        Stu this[String s]

        {

            get

            {

                return arr[i];

            }

            set

            {

                arr[i] = value;

            }

        }

    }

 

    LectureRoom l = new LectureRoom();

    Stu sealed = l[3];

 

    // 닷넷에서 쓰는 방법.

    LectureRoom l = new LectureRoom();

    Stu s = l["홍길동"];

 

인덱서

static int n;

 

        static Stu()

        {

        }

        ~Stu()

        {

        }

 

 

생성자

소멸자

정의를 해줘야할 경우가 생긴다.

네이티브 DLL을 참조해서 C#에서 사용하는데 네이티브 개체를 소멸해야 할 책임을 져야 할 경우가 생긴다. 그럴 경우 C#컴파일러는 네이티브 개체에 대한 소멸의 책임을 져주지 않기 때문에 개발자가 소멸의 책임을 져야 한다.

abstract int Foo(); // 추상메소드.. 구현을 정의하진 않는다.

 

        virtual int Soo()

        {

            return 0;

        }

        int zoo()

        {

            return 0;

        }

 

클래스 앞에는 inter와 static만 붙는다.

 

sealed class SpecialStu : Stu     // 봉인 클래스

    {

        override int Foo()

        {

            return 0;

        }

        override int Soo()

        {

            return 0;

        }

       

        // 부모의 메소드와 동일한 시그니처를 가지고 있는 메소드를 만들고 싶을때

        new int Zoo()  

        {

            return 0;

        }

    }


'Programming > .NET' 카테고리의 다른 글

[.NET] Static  (0) 2015.05.19
[.NET] Const 와 readonly  (0) 2015.05.19
[.NET] Property(속성)  (0) 2015.05.11
[.NET] .NET Interface  (0) 2015.05.11
[.NET] .NET 개요  (0) 2015.05.11
posted by Kanais