티스토리 뷰
특징 |
클래스 |
구조체 |
키워드 |
class |
struct |
형식 |
참조 형식 |
값 형식 |
복사 |
얕은 복사 |
깊은 복사 |
인스턴스 생성 |
new 연산자와 생성자 필요 |
선언만으로도 생성 |
생성자 |
매개 변수 없는 생성자 선언 가능 |
매개 변수 없는 생성자 선언 불가능 |
상속 |
가능 |
모든 구조체는 System.Object 형식을 상속하는 System.ValueType으로 부터 직접 상속 받음 |
[구조체 예시]
namespace 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("{0}, {1}, {2}", X, Y, Z);
}
}
class Program
{
static void Main(string[] args)
{
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());
}
}
}