티스토리 뷰
| 특징 | 클래스 | 구조체 | 
| 키워드 | 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());
}
}
}
