아카이빙/C#

[C#] 구조체

셩님 2018. 6. 18. 07:05

[C#] 구조체

  • C#에도 구조체(Structure)가 있다.

  • 구조체와 클래스차이는?

1. 클래스는 참조형식, 구조체는  형식이다.
   - 구조체의 인스턴스는 스택에 할당되고, 인스턴스가 선언된 블록이 끝나면 메모리에서 사라진다.
2. 클래스는 얕은 복사, 구조체는 깊은 복사
3. 클래스는 매개변수 없는 생성자 선언 가능, 구조체는 불가능

구조체 예시

struct Vector3
{
   public float x, y, z;
   public Vector3(float x, float y, float z)
  {
       this.x = x;
       this.y = y;
       this.z = z;
  }

   public override string ToString()
  {
       return string.Format("({0}, {1}, {2})", x, y, z);
  }
}

테스트

class MainApp
{
   static void Main()
  {
       Vector3 pos = new Vector3(1f, 1f, 1f);
       Console.WriteLine(pos.ToString());
       Console.WriteLine();

       //깊은 복사
       Vector3 newPos = pos;
       
       newPos.y = 0f;
       newPos.z = 0f;

       Console.WriteLine(pos.ToString());
       Console.WriteLine(newPos.ToString());

  }
}

결과

(1, 1, 1)

(1, 1, 1)
(1, 0, 0)

참조

  • 뇌를 자극하는 C# 5.0 프로그래밍, 박상현, 한빛미디어


'아카이빙 > C#' 카테고리의 다른 글

[C#] 인터페이스를 상속하는 인터페이스  (0) 2018.06.18
[C#] 인터페이스  (0) 2018.06.18
[C#] 확장 메소드 (Extension Method)  (0) 2018.06.18
[C#] 오버라이딩  (0) 2018.06.18
[C#] 형변환과 is, as  (0) 2018.06.18