[C#] static과 new 그리고 property

Programming/.NET Programming 2009. 5. 31. 04:34

키워드 static

using System;

namespace Program

{

    class A

    {

        int a;

        static int b;
 

        // static 변수
       
public void main()

        {

             this.a; // Error. 객체생성이 아직 안된 상태라서 사용할 수 없음    

        }


        public static void main2()

        {

             this.b; // 에러. static 함수내에서는 this를 사용할 수 없음

             b = 10; // 함수도 변수도 모두 static이니까 객체 생성 전에도 사용할 수 있음
        }

    }

 

    class B

    {

        // static 함수
       
public static void Write()

        {

            Console.WriteLine("Test");

        }

        // 굳이 객체 생성하지 않아도 클래스 이름만으로 접근 가능 ---> B.Write();

        // 자주 사용하는 함수는 편하게 사용하라고 static으로 선언

        // 대표적인 예가 Math함수

     }

}

 

// 정리
//  static은 프로그램이 구동되기 직전 메모리 할당을 받고,
//  프로그램 종료시 까지 사라지지 않도록 변수 및 함수 앞에 붙이며
//  프로그램 구동 되기 전 메모리에 할당이 되기 때문에
//  소속된 객체 생성 여부에 상관없이 클래스의 이름만으로도 사용가능하다.


키워드 new

A a; // 클래스를 가리키기 위한 포인터 변수만 선언, 크기는 4byte

A a = new a(); // 클래스 크기의 공간이 잡힘, 포인터가 그 클래스를 가리킴
* C# 문법에는 pointer라는 개념이 없지만, 다른 문법을 구현 과정에 사용되고 있다.


private 함수를 접근 가능하게 해주는 Property

namespace Study
{

    public class A

    {

        private int a;

        public int results // 함수와 모양이 비슷하지만 파라미터를 가지지 않음

        {

               get { return a; } // 읽

               set { a = value; } // 쓰기

               // 둘 중 하나를 지우면 읽기 전용이나 쓰기 전용 변수로 바꿀 수 있음

         }
    }

}

// property를 사용하는 이유
//  1. 읽기와 쓰기 둘 중 어느 하나만 가능하게 할 수 있다.

//  2. 실제 값을 변경하지 않고도 가져올 때 처리를 해서 가져올 수 있다.


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

[C#] this와 상속  (0) 2009.05.31
[C#] 오버로딩과 오버라이딩  (0) 2009.05.31
[C#] 상속과 sealed  (1) 2009.05.31
[C#] 인터페이스, 추상클래스, 클래스  (1) 2009.05.31
[C#] C# 시작하기  (0) 2009.05.31
: