[C#] static

Young·2024년 5월 24일
1

C#

목록 보기
1/9
// <이것은 C#이다> 3판 코드
using System;

namespace thisIsCSharp
{
    class MainApp
    {
        class Instance_Static
        {
            public int a;
            public int b;
            public static int c;    // 정적 필드
            public static int d;    // 프로그램 중 유일한 변수

            public void print()
            {
                Console.WriteLine($"{a}, {b}, {c}, {d}");
            }
        }

        static void Main(string[] args)
        {
            Instance_Static ins1 = new Instance_Static();
            // 인스턴스를 만들어서 주면
            ins1.a = 1;
            ins1.b = 2;         // ins1 안에 있는 녀석들만 변화
            ins1.print();

            Instance_Static.c = 3;
            Instance_Static.d = 4;
            Console.WriteLine("----------"); // static c, d 변화
            ins1.print();       // 라인 지나면서 바뀐 static 값 받음

            Instance_Static ins2 = new Instance_Static();
            ins2.print();       // static 값만 변화해서 3, 4 들어감
        }
    }
}

using System;

namespace thisIsCSharp
{
    class StaticField
    {
        public static int Count = 0;
    }

    class Do_A
    {
        public Do_A()
        {
            StaticField.Count++;    // 1 더해
        }
    }

    class Do_B
    {
        public Do_B()
        {
            StaticField.Count += 2; // 2 더해
        }
    }

    class MainApp
    {
        static void Main(string[] args)
        {
            Console.WriteLine($"그냥 뽑으면 : {StaticField.Count}");

            new Do_A();
            Console.WriteLine($"1 더하고 뽑으면 : {StaticField.Count}");
            new Do_A();
            Console.WriteLine($"또 더하면 : {StaticField.Count}");
            new Do_B();
            Console.WriteLine($"거기에 2를 더하면 : {StaticField.Count}");
            new Do_B();
            Console.WriteLine($"또 2를 더하면 : {StaticField.Count}");
        }
    }
}

static은 인스턴스가 아닌 클래스 자체에 속해있어 어디서 값을 수정하든 덮어써진다.

profile
Beginner : C#

0개의 댓글