C# Basic Tutorial (Class - 생성자)
2022. 1. 12. 00:00ㆍCSharp/Basic
반응형
개요
Class 란 메서드 (Method), 속성 (Property), 필드 (Field), 이벤트 (Event) 등을 멤버로 포함하는 소프트웨어 단위
Constructor (생성자 메서드)
: class 또는 struct를 만들 때마다 해당 생성자가 호출됨. 클래스 또는 구조체에는 서로 다른 인수를 사용하는 여러 생성자가 있을 수 있다. 기본값을 설정하고, 인스턴스화를 제한한다.
구문
/// <summary>
/// 여러가지 생성자 정의
/// </summary>
public class MyClass
{
private readonly string _lastName;
private readonly string _firstName;
/// <summary>
/// 생성자를 통해 lastName 과 firstName 을 설정한다.
/// </summary>
/// <param name="lastName"></param>
/// <param name="firstName"></param>
public MyClass(string lastName, string firstName)
{
_lastName = lastName;
_firstName = firstName;
}
/// <summary>
/// parameter 가 없는 기본 생성자
/// </summary>
public MyClass()
{
_lastName = "David";
_firstName = "anderson";
}
}
정적생성자
이전 같은 형태는 Instance 생성자라 하여 new 를 통해 class 의 instance 가 생성되면 그때 마다 실행되는 생성자이다.
정적 생성자란 static field 또는 static property 등을 초기화 해주는 생성자 이다.
매번 실행되지 않으면 application 실행 시 한번만 초기화 되는점을 참고하자.
/// <summary>
/// 여러가지 생성자 정의
/// </summary>
public class MyClass
{
...
...
private static readonly string _staticField;
...
...
/// <summary>
/// 정적 생성자는 parameter 를 가질 수 없다.
/// application 실행 시 한번만 실행된다.
/// </summary>
static MyClass()
{
_staticField = "한번만 실행되는 생성자";
}
}
아래 code 를 추가 한 후 생성자를 호출해보자.
/// <summary>
/// 각 field 값 print
/// </summary>
public void PrintFields()
{
$"staticField = {_staticField}, _firstName = {_firstName}, _lastName = {_lastName}".WriteLine();
}
Program.cs 에서 다음을 추가한다.
var methods = new MyClass();
methods.PrintFields();
// output
// staticField = 한번만 실행되는 생성자, _firstName = anderson, _lastName = David
methods = new MyClass("앤더슨","내이름은");
methods.PrintFields();
// output
// staticField = 한번만 실행되는 생성자, _firstName = 내이름은, _lastName = 앤더슨
관련영상
반응형
'CSharp > Basic' 카테고리의 다른 글
C# Basic Tutorial (Class - 상속, 다형성, 추상화) (0) | 2022.01.14 |
---|---|
C# Basic Tutorial (Class - 멤버사용법 및 기타등등) (0) | 2022.01.13 |
C# Basic Tutorial (Method 2/2) (0) | 2022.01.11 |
C# Basic Tutorial (Method 1/2) (0) | 2022.01.10 |
C# Basic Tutorial (Arrays) (0) | 2022.01.09 |