필드

냐옹·2024년 4월 11일
0

.NET

목록 보기
25/31

Field

C#에서 필드는 클래스나 구조체 내부에 선언된 변수를 말한다. 필드는 해당 클래스나 구조체의 인스턴스와 관련된 데이터를 저장한다. 필드에는 여러가지 유형의 데이터 (예시. 정수, 문자열, 개체참조 등)가 저장될 수 있으며, 접근 제한자를 사용하여 접근 수준을 지정할 수 있다.

Field Initializer

필드 이니셜라이저를 사용하면 필드를 선언과 동시에 초기화할 수 있다. 이 방법은 생성자를 통한 초기화보다 간결하고, 필드 선언 시에 기본 값을 지정하는데에 유용하다.

  • 생성자를 사용하는 경우
public class MyClass{

	public MyClass(int param1, string param2){
    	MyIntField = param1;
        MyStringField = param2;
    }
	public int MyIntField = 0; 
    // 갑 형식을 선언할 시에는 default값을 명시적으로 설정해주면 좋다.
    public string MyStringField = null!;
    // 문자열 같은 참조형에는 null!을 넣어주면 좋다. 
    // 혹은 "" 와 같이 빈 문자열을 넣어줘도 좋다.
}
  • 생성자를 사용하지 않고 필드이니셜라이저를 사용하는 경우
public class MyClass{

	public int MyIntField = 10;
    public string MyStringField = "Hello world";
}

근데 위와 같은 경우보다는 이런 형태가 좀 더 낫다고 생각한다.
프로퍼티의 get, set 접근자를 통한 필드 이니셜라이저 사용

public class MyClass{

	public int MyIntField{get;set;} = 10;
    public string MyStringField{get;set;} = "Hello world";
}

귀찮고 코드가 길어진다고 해도 명시적이고 명확한 코드가 좋은 코드라고 생각한다.

위와 같은 초기화는 각 인스턴스가 생성될 때 자동으로 이루어진다.

주의할 점

  • 필드 이니셜라이저에서는 해당 클래스의 다른 필드나 메서드에 접근할 수 없다. 초기화는 생성자 호출 전에 이루어지기 때문이다.

  • 필드 이니셜라이저와 생성자에서 동일한 필드를 초기화할 경우 생성자에서의 값이 최종 값이 된다. 왜냐하면 필드 이니셜라이저를 통한 초기화가 가장 먼저 실행이 되고, 그 다음에 생성자가 실행되기 때문이다.

0개의 댓글