클래스는 참조 타입 중 가장 일반적인 형태 입니다. 클래스는 객체를 나타내며, 해당 객체는 힙 메모리에 할당됩니다. 클래스는 멤버 변수(필드), 메서드, 속성등을 포함할 수 있으며, 다른 클래스로부터 파생될 수도 있습니다.
class Person
{
public string Name { get; set; }
public int Age { get; set; }
}
class Program
{
static void Main()
{
// Person 클래스의 인스턴스 생성
Person person = new Person();
// person 객체의 속성 값 변경
person.Name = "홍길동";
person.Age = 30;
// person2 변수에 person 객체의 참조 할당
Person person2 = person;
// person2 객체의 속성 값 변경
person2.Name = "김철수";
person2.Age = 25;
// person과 person2는 동일한 객체를 참조함
Console.WriteLine(person.Name); // 출력: 김철수
Console.WriteLine(person.Age); // 출력: 25
}
}
person2 = person
은 person(값)을 person2라는 변수에 저장하는 행위가 아니다.
person 이 가지고 있는 참조값의 주소를 person2에 할당하여 person과 person2가 동일한 개체를 가리키도록 하는 것입니다.
person과 person2가 동일한 주소를 가지므로 코드에서 person2.Name
를 수정한뒤 person.Name
을 호출하면 초기에 person.Name
에 저장한 “홍길동”이 “김철수”로 바뀐것을 알 수 있습니다.