구조체

  • 클래스는 실세계의 객체를 추상화 하는데그 존재의 이유가 있음
  • 구조체의 경우 데이터를 담기 위한 자료구조로 이용
특징 클래스 구조체
키워드 class struct
형식 참조 형식(힙에 할당) 값 형식(스택에 할당)
복사 얕은 복사(Shallow Copy) 깊은 복사(Deep Copy)
인스턴스 생성 new 연산자와 생성자 필요 선언만으로도 생성
생성자 매개변수 없는 생성자 선언 가능 매개변수 없는 생성자 선언 불가능
상속 가능 값 형식이므로 상속 불가
namespace ThisIsCsharp.Chapter07;  
  
public class Structure  
{  
	struct Point3D  
	{  
		public int X;  
		public int Y;  
		public int Z;  
		  
		public Point3D(int X, int Y, int Z)  
		{  
			this.X = X;  
			this.Y = Y;  
			this.Z = Z;  
		}  
		  
		public override string ToString()  
		{  
			return string.Format($"{X},{Y},{Z}");  
		}  
	}  
	  
	static void Main()  
	{  
		Point3D p3d1; // 선언만으로 인스턴스 생성  
		p3d1.X = 10;  
		p3d1.Y = 20;  
		p3d1.Z = 40;  
		  
		Console.WriteLine(p3d1.ToString());  
		  
		Point3D p3d2 = new Point3D(100, 200, 300); // 생성자를 이용한 인스턴스  
		Point3D p3d3 = p3d2; // 구조체의 인스턴스를 다른 인스턴스에 할당 시, 깊은 복사  
		p3d3.Z = 400;  
		Console.WriteLine(p3d2.ToString());  
		Console.WriteLine(p3d3.ToString());  
	}  
}