본문 바로가기
프로그래밍/C#.net

정적변수,정적메소드

by 건우아빠유리남편 2009. 8. 24.
반응형

정적변수(static variable),정적메소드(static mathod)는 특정 오브젝트가 아니라,클래스에 속하는 멤버변수나 메소드를 말한다.

 

■사용방법

static 형 변수이름

 

예를 들어

class Person
{
  public string name; // 이름.개인별로 다르기 때문에 인스턴스변수로.
  public int age;        // 나이.개인별로 다르기 때문에 인스턴스변수로.

 

  public static string scientificName;

  // 학명. 사람마다가 아니라 분류에 의해 정해지는 것이라, 정적변수로.
}

 

특정오브젝트는 사람마다,클래스는 인간이라는 종별,자체가 되는것이라,이름과 나이는 사람마다 달라지지만,인간이라는 종의 학명[Homo sapiens]은 공통이다.

그래서, 사람이라는 클래스를 작성했을때 name이나 age라는 멤버변수를 작성했을 경우에는 인스턴스변수로,scientficName 이라는 클래스전체에 공유되어야 하는 변수를 만들경우에는 정적변수로 해야한다.

 

정적변수는 클래스에 속해있는 값이라, 값을 참조할때는 아래와 같다.

Person p = new Person()

p.name = "이호리"; // 인스턴스변수는 [인스턴스명.변수명]으로 참조한다.
p.age  = 18;

Person.scientificName = "Homo sapiens"; // 정적변수와 [클래스명.변수명]으로 참조한다.

또, 정적변수,정적메소드는 수학함수나수학정의등의 인스턴스가 필요없는 함수를 정의하는 경우에도 사용된다.

using System;

class Math
{
  // sin x 를 구하는 함수
  static double Sin(double x)
  {
    double xx = -x * x;
    double fact = 1;
    double sin = x;
    for(int i=0; i<100; ++i)
    {
      fact *= i; ++i; fact *= i; ++i;
      x *= xx;
      sin += x / fact;
    }
    return sin;
  }
}

class StaticSample
{
  static void Main()
  {
    Console.Write(Math.Sin(1));
  }
}

 

표준라이브러리의 Math.Sin 이나 Console.Write 등은 정적메소드이다.

 

■정적클래스

Ver.2.0

C# 2.0에서는 클래스를 정의할때 static을 부치는 것으로 정적멤버에서만 정의되지 않았던 클래스를 작성을 할 수 있다.

 

static class Math
{

  // double x; 등의 static 이 아닌 변수나 메소드의 정의는 할 수 없다.

 

  // sin x 을 구하는 함수.
  static double Sin(double x)
  {
    double xx = -x * x;
    double fact = 1;
    double sin = x;
    for(int i=0; i<100; ++i)
    {
      fact *= i; ++i; fact *= i; ++i;
      x *= xx;
      sin += x / fact;
    }
    return sin;
  }
}

 

참조

http://ufcpp.net/study/csharp/oo_static.html

 


반응형

'프로그래밍 > C#.net' 카테고리의 다른 글

virtual method  (0) 2009.08.24
계승  (0) 2009.08.24
프로퍼티  (0) 2009.08.24
은폐  (0) 2009.08.24
Constructor  (0) 2009.08.24

댓글