블로그 이미지
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 21:50

Recent Post

Recent Comment

Recent Trackback

Archive

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

 

작성날짜    : 2011-03-24


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

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

 


Static

C#에서 static을 이용하여 정적 클래스와 정적 멤버를 정의 및 선언할 수 있습니다.

정적 클래스는 class정의에서 static을 이용한 클래스로써 인스턴스 멤버를 가질 수 없고 정적 멤버만을 포함하게 됩니다. 인스턴스 멤버가 없으므로 클래스 명으로 모든 멤버를 접근하게 됩니다.  당연히 new를 통해 개체 인스턴스를 생성할 수 없습니다.  또한, 정적 클래스는 봉인된 클래스이며 이로 인해 정적 클래스를 기반으로 파생된 클래스를 만들 수가 없습니다.

정적인 멤버는 static으로 선언된 멤버로써 인스턴스의 멤버가 아닌 클래스의 멤버입니다. 정적인 멤버는 클래스 명으로 접근이 가능하며  따라서, 클래스의 명으로 접근이 가능하며 정적 메소드에서 인스턴스의 멤버에 접근은 불가능 합니다.  그리고, 정적 멤버는 재정의 대상이 아닙니다.

 

정적 생성자

정적 생성자는 정적인 데이터를 초기화하는데 사용하는 생성자로 해당 클래스의 정적 멤버가 처음으로 참조되거나 첫 번째 인스턴스가 만들어지기 전에 자동으로 호출됩니다.  이와 같은 특징으로 인해  정적 생성자는 액세스 한정자를 사용하지 않으며 매개 변수도 없고 직접 호출할 수도 없습니다.  또한, 정적 생성자는 실행되는 시기를 제어할 수도 없습니다.

 

namespace AboutStatic

{

    // static 멤버

       // static 생성자

       // 기타 static 멤버

    // static 클래스

 

    // 전역 공간 대신해서 사용할 수 있다.

    static class Calculator

    {

        public static int Add(int a, int b)

        {

            return a + b;

        }

    }

 

    //이 프로그램 전역에서 공통적으로 사용할 상수를 정의할 시 사용할 수 있다.

    abstract class MyMax

    {

        // const는 묵시적인 static멤버니까 위에서 static 쓴 것과 동일 하다.

        public const int max_iq = 10000;

        public const int max_num = 100;

    }

 

    // 이값을 런타임시 결정하게 할 때..

    class Stu

    {

        static readonly int max_stu;

        // 사용자가 값을 입력했을 시 초기화 하려고 할때

        // 이렇게 했을 시 max_stu가 호출되기 이전에 호출되는 것을 보장한다.

        static Stu()

        {

            max_stu = 1000;

        }

        public static int MaxStu

        {

            get

            {

                return max_stu;

            }

        }

    }

 

    class Program

    {

        static void Main(string[] args)

        {

            Console.WriteLine("{0}"Calculator.Add(23));

           

            Console.WriteLine(Stu.MaxStu);

        }

    }

}

 

실행 화면

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

[.NET] Constructor(생성자)  (0) 2015.05.19
[.NET] Method  (0) 2015.05.19
[.NET] Const 와 readonly  (0) 2015.05.19
[.NET] Property(속성)  (0) 2015.05.11
[.NET] .NET Interface  (0) 2015.05.11
posted by Kanais