S_pot
210524 C#_인스턴스변수, 지역변수, 생성자, 소멸자, stack형 소멸순서 본문
using System;
namespace _210524_001
{
class Program
{
static void Main1(string[] args)
{
Cat Test1 = new Cat("1"); // 생성은 1234순이지만 소멸은 4321이다.
Cat Test2 = new Cat("2"); // 이와같은 이유는 stack형이기 때문에 위쪽에 쌓여있는 것 먼저 소멸된다.
Cat Test3 = new Cat("3");
Cat Test4 = new Cat("4");
}
static void Main(string[] args)
{
Cat aCat; // 객체참조 변수생성: 참조대상은 Cat Type
// 객체생성방법: new 사용 + 생성자호출
aCat = new Cat(); // Cat의 기본 생성자를 이용하여 객체생성
aCat.Name = "네로";
Console.WriteLine(aCat.Name); // 생성자와 소멸자 사이에 출력이 된다.
Cat bCat = new Cat("기티");
}
}
}
using System;
// 클래스
// 변수: 상태
// 메소드: 행위
namespace _210524_001
{
class Cat
{
public string Name; // 인스턴스 변수
public Cat() // 생성자: 기본(디폴트)생성자 = 인자없음
{
Console.WriteLine("냥이 객체생성");
return; // 생략가능
}
public Cat(string Name) // 생성자: 일반생성자 = 인자가 있다.(string Name)
// Name = 지역변수
// 메서드 오버로딩: 메서드의 이름이 동일, 매개변수가 다름
{
this.Name = Name; // this는 실행중인 객체를 뜻함. 인스턴스 변수와 지역변수를 구별해준다.
// 왼쪽이 인스턴스 변수, 오른쪽이 지역변수이다.
Console.WriteLine("냥이 객체생성");
return; // 생략가능
}
~Cat() // 소멸자
{
Console.WriteLine(Name + " 객체소멸");
return; //생략가능
}
}
}
Main1 출력값
Main 출력값
'C#' 카테고리의 다른 글
210525 C#_얕은복사(Shallow), 깊은복사(Deep) (0) | 2021.05.25 |
---|---|
210524 C#_정적필드와 메소드(static) (0) | 2021.05.24 |
210521 C#_생성자 실습 (0) | 2021.05.21 |
210520 C#_ref 디버그모드 (0) | 2021.05.21 |
210521 C#_디버그모드로 객체검색 (0) | 2021.05.21 |