나 개발자 진짜 되냐?

[ C# 기본 문법 25 ] init 이란? 본문

C# 을 맛보았어요!/문법정리를 해보았어요!

[ C# 기본 문법 25 ] init 이란?

Snow Rabbit 2024. 10. 7. 11:59

 

생성자를 공부하며 init라는 친구를

알게 되었다.

 

하지만..

분명 본 적은 있는데

무슨 뜻인지 모르기에

 

한번 정리하고 넘어가려고 한다!

 


init

간단하게 말하면

 

초기화

 

public void init으로도 쓰이고

 

프로퍼티에서는

 

원래는 get의 친구 set

인데

 

이번엔 set 대신 init라는 친구가 나온다.

 

이 친구는,

private보다 강력한 벽을 가진 친구로

 

객체 초기화를 할 때만

외부에서 변경이 가능하게만 설정한 친구이다.

한번 박히면 절대 지워지지 않는...

 

뭐..

의료기록, 뭐 성적표, 뭐.. 등등

 

 

간단하게 정리하면

init메서드에서 프로퍼티 값을 설정하고

get으로 해당 값을 반환해 주는 역할이다.

 

 

아까 성적을 이야기했으니

좋은 예시를 하나 준비했다.

 

 

 

public class MyClass
{
    // 자동 구현 프로퍼티와 init 접근자 사용
    public int Value { get; init; }
}

class Program
{
    static void Main(string[] args)
    {
        // 객체 초기화 시 Value 설정
        MyClass myObject = new MyClass { Value = 10 };

        // 프로퍼티 값 가져오기
        Console.WriteLine(myObject.Value); // 출력: 10

        // 다음 코드는 컴파일 오류 발생 (Value는 init 전용이므로)
        // myObject.Value = 20; // 주석 처리된 코드
    }
}

먼저

클래스 안에 get init를 써주고

 

메인에서 new로 생성해 주고

값도 10으로 받아온다.

그다음에 실행해 주면! 10이 나오는데

메인에서 만약에 20으로 바꿔주려고 아무리 애를 써도?

안된다!

 

왜냐면 init이기 때문!!

 


그렇다면 init를 함수로 써주면 어떻게 될까?

 

init초기화해주는 친구이니 비슷하겠지?

 

맞다!

 

객체의 초기화에 사용되며

생성자에서 수행하기 어려운 초기화 작업을 수행할 때 사용한다.

 

public class Counter
{
    private int _count;

    // 초기화 메서드
    public void init(int initialValue)
    {
        _count = initialValue; // 카운트 초기화
    }

    // 카운트 증가 메서드
    public void Increment()
    {
        _count++;
    }

    // 카운트 값 가져오기
    public int GetCount()
    {
        return _count;
    }
}

class Program
{
    static void Main(string[] args)
    {
        Counter counter = new Counter();

        // init 메서드를 통해 초기값 설정
        counter.init(5);

        // 카운트 출력
        Console.WriteLine(counter.GetCount()); // 출력: 5

        // 카운트 증가
        counter.Increment();
        Console.WriteLine(counter.GetCount()); // 출력: 6
    }
}

init를 만들어서 리턴 없이도 초기화가 가능하다. 왕신기신기

 

 

init를 공부해 보았다.

초기화해주는 메서드인 거 잊지 말자!!