블로그 이미지
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-11 02:10

Recent Post

Recent Comment

Recent Trackback

Archive

2015. 5. 19. 11:06 Programming/.NET

 

작성날짜    : 2011-03-24


참고 : http://msdn.microsoft.com/ko-kr/library/ace5hbzh.aspx

선문비트 프로젝트 : http://cafe.daum.net/smbitpro?t__nil_cafemy=item

 


생성자

생성자는  클래스나 구조체의 데이터를 초기화하는 특수한 메서드로 클래스 명과 동일한 이름을 갖습니다.

인스턴스의 생성자는 인스턴스의 데이터를 초기화하는데 사용이 됩니다.

매개변수가 없는 생성자를 기본 생성자라 하며 해당 클래스에 인스턴스 생성자가 하나도 없으면 내부적으로 기본 생성자를 만들어 줍니다.

이러한 경우에 초기화가 되지 않음 멤버의 경우 기본값으로 초기화가 됩니다참고로 기본값은 정수 형식은 0이고 bool형식은 false, 클래스 형식의 변수는 null입니다그리고구조체의 경우는 기본 생성자는 정의할 수 없습니다.

복사 생성자는 자신과 같은 형식을 입력 매개변수로 받아 입력 받은 개체의 데이터를 통해 생성되는 개체의 데이터를 초기화하는 생성자를 말합니다.

정적 생성자는 정적 데이터를 초기화하는 작업을 수행하는데 사용이 되며 자동으로 호출된다고 static 강의에서 언급한 바가 있죠.

 

Base

base는 파생 클래스의 인스턴스를 만들 때 호출해야 하는 기본 클래스 생성자를 지정하거나 파생 클래스에서 재정의된 메서드에 대한 기본 클래스의 메서드를 호출할 때 사용이 됩니다.

 

 

namespace AboutConstructor

{

    // 설명을 위하여 만든 구조체와 클래스 이므로 실제로 사용시

    // 멤버필드를 public으로 사용하지 말것.

    struct Hoo

    {

        public int i;

        public int j;

    }

    class Coo

    {

        public int i;

        public int j;

    }

 

 

    // 구조체 같은 경우 매개변수가 없는 생성자를 만들 수 없다.

    struct Foo

    {

        public Foo(int i)

        {

 

        }

    }

 

    //객체의 생성자를 만들지 않아도 컴파일러는 된다.

    class Stu

    {

        int i;

        // class는 매개변수가 없는 생성자도 만들 수 있다.

        public Stu()

        {

            i = 3;

        }

        // 생성자는 중복정의가 가능하다.

        public Stu(int _i)

        {

            i = _i;

        }

        // 복사 생성자

        public Stu(Stu s)

        {

            i = s.i;

        }

    }

 

    class Program

    {

        static void Main(string[] args)

        {

            // 레퍼런스 타입은 Heap에 할당된다.

            //Foo foo = new Foo(3); // 동적으로 할당 되는 것이 아니라 Heap에 할당 된다.

 

            // 매개변수가 있는 생성자를 하나라도 정의한다면 디폴트 생성자를 정의하지 않은 경우

            // 디폴트 생성자를 사용할 수 없다.

            Stu stu = new Stu();

            Stu stu2 = new Stu(3);

 

        }

    }

}

 


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

[.NET] Array (배열)  (0) 2015.05.19
[.NET] Object (객체)  (0) 2015.05.19
[.NET] Method  (0) 2015.05.19
[.NET] Static  (0) 2015.05.19
[.NET] Const 와 readonly  (0) 2015.05.19
posted by Kanais