본문 바로가기
c#

c#의 init access 문법과 top level

by kcj3054 2022. 7. 24.

InitAcessor

public class Score
{
    public readonly int category;
    public int val;

    public int Value
    {
        get
        {
            return this.val;
        }
        init
        {
            this.category = 1;
            this.val = Value;
        }
    }

}

Program.cs

// See https://aka.ms/new-console-template for more information

using System.Threading.Channels;
using ConsoleApp3;

Console.WriteLine("Hello, World!");
Thread th1 = new Thread(new ThreadStart(Program11.Class1.Func1));
Thread th2 = new Thread(new ThreadStart(Program11.Class2.Func2));
//
// th1.Start();
// th2.Start();
// Console.WriteLine("스레드 종료!!");


var s = new Score()
{
    val = 90
};
Console.WriteLine(s.val);

public class Program11
{
    public class Class1
    {
        public static void Func1()
        {
            for (int i = 0; i < 10; i++)
            {
                Console.WriteLine("스레드1호출!!");
            }
        }
    }

    public class Class2
    {
        public static void Func2()
        {
            for (int i = 0; i < 5; i++)
            {
                Console.WriteLine("스레드호출2!!!");
            }
        }
    }


}
  • c#의 신문법에서 9.0에서 prgram,cs에서는 top level이 적용된다. 여기서 함수를 만들어서 사용하려면 함수 생성 부분은 밑으로 가야한다.
var s = new Score()
{
    val = 90
};
  • 위의 부분이 init 문법이다 개체를 만들자마자 바로 개체의 val값을 초기화 시켜버린다.. !!!

'c#' 카테고리의 다른 글

c# (시작하세요 c# 프로그래밍 도서 )  (0) 2022.12.05
추상 vs 인터페이스  (0) 2022.12.05
Immutable  (0) 2022.07.07
MessagePack  (0) 2022.07.06
readonly vs const  (0) 2022.07.06