재우니의 블로그



이번에는..구조체를 c#에서도 사용을 하고 있는데요.

굳이 클래스를 사용해도 되지만, 구조체를 사용하는 이유는 뭘까요? 구조상으로는 ... 클래스와 동일하답니다. 
그러나 상황에 따라서 클래스의 효율적이지 못한 것을 구조체가 해결해 주거든요. ^^;

프로그램을 하면서 제일 중요한 부분이 공간낭비를 축소하고 작성시 시간적인 낭비를 줄이기 위해서는 클래스를 사용하기 보다는 구조체를 사용하는것이 메모리를 줄이는데 더 효율적입니다.


그럼 구조체와 클래스의 차이점을 알기 위해 아래와 같이 코딩해 보았습니다.


using System;

struct Girl
{
    public int age;
    public float weight;
    public Girl(int a,float w)
    {
       age = a;
       weight = w;
    }
}

public class StructDemo
{
    public static void Main()
    {
       Girl shim;
       shim.age = 15;
       shim.weight = 44f;
       Console.WriteLine("shim:{0} and {1}",shim.age,shim.weight);
       Girl shimpark = shim;
       Console.WriteLine("shimpark:{0} and {1}",shimpark.age,shimpark.weight);
    }
}




실행을 하면..

c:\>csc StructDemo.cs
c:\>Struct

shim:15 and 44
shimpark:15 and 44



여기서 보면 구조체 shim 을 park 에 값을 복사하는 것을 볼 수 있답니다. Girl shimpark = shim; <- 이 부분...
출력을 하면 동일한 값이 출력되는 현상을 볼 수 있답니다. 

구조체인 value type 의 변수를 선언함과 동시에 메모리 생성이 이루집니다. 

간단히 말을 하면 클래스는 참조타입 즉 reference type 이지만, 구조체는 값타입 즉 value type 입니다.



posted by 심재운(shimpark@gmail.com)