C#/이것이 C#이닀

27. 읽기 μ „μš© ν•„λ“œ, readonly

Rainbow🌈Coder 2022. 2. 11. 15:41
728x90

λ³€μˆ˜λŠ” λ³€ν•˜λŠ” 데이터λ₯Ό λ‹΄μ§€λ§Œ,

μƒμˆ˜λŠ” λ³€μΉ˜ μ•ŠλŠ” 데이터λ₯Ό λ‹΄λŠ”λ‹€.

μƒμˆ˜λŠ” const ν‚€μ›Œλ“œλ₯Ό μ΄μš©ν•΄μ„œ μ„ μ–Έν•œλ‹€.

μ»΄νŒŒμΌλŸ¬λŠ” μƒμˆ˜μ— μ§€μ •λœ 값을 μ‹€ν–‰νŒŒμΌ μ•ˆμ— 기둝해둔닀.

μƒμˆ˜λŠ” ν”„λ‘œκ·Έλž¨μ΄ μ‹€ν–‰λ˜κΈ° μ „λΆ€ν„° 이미 μ •ν•΄μ Έ μžˆλ‹€.

 

그리고 ν”„λ‘œκ·Έλž¨ μ‹€ν–‰ μ€‘μ—λŠ” μ ˆλŒ€ κ·Έ 값을 λ°”κΏ€ 수 μ—†λ‹€.

λ³€μˆ˜λŠ” 자유둭게 값을 λ³€κ²½ν•  수 μžˆλ‹€.

읽기 μ „μš© ν•„λ“œλŠ” μƒμˆ˜μ™€ λ³€μˆ˜ κ·Έ 쀑간 μ–΄λ”˜κ°€μ— μžˆλ‹€.

 

읽기 μ „μš© ν•„λ“œλŠ”, 읽기만 κ°€λŠ₯ν•œ ν•„λ“œλ₯Ό λ§ν•œλ‹€.

즉, ν΄λž˜μŠ€λ‚˜ ꡬ쑰체의 λ©€λ²„λ‘œλ§Œ μ‘΄μž¬ν•  수 있으며

μƒμ„±μž μ•ˆμ—μ„œ ν•œ 번 값을 μ§€μ •ν•˜λ©΄,

κ·Έ ν›„λ‘œλŠ” 값을 λ³€κ²½ν•  수 μ—†λŠ” 것이 νŠΉμ§•μ΄λ‹€.

 

 

 

컴파일 μ—λŸ¬ : 
였λ₯˜ CS0191 읽기 μ „μš© ν•„λ“œμ—λŠ” ν• λ‹Ήν•  수 μ—†μŠ΅λ‹ˆλ‹€.

단, ν•„λ“œκ°€ μ •μ˜λœ ν˜•μ‹μ˜ μƒμ„±μž λ˜λŠ” μ΄ˆκΈ°κ°’ μ „μš© setterλ‚˜ λ³€μˆ˜ μ΄λ‹ˆμ…œλΌμ΄μ €μ—μ„œλŠ” μ˜ˆμ™Έμž…λ‹ˆλ‹€. 

using System;
using System.Collections;
using System.Collections.Generic;
using System.Globalization;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using static System.Console;

namespace Overriding
{
    class Configuration
    {
        private readonly int min;
        private readonly int max;

        public Configuration(int v1, int v2)
        {
            min = v1;
            max = v2;
        }
        public void ChangeMax(int newMax)
        {
            max = newMax; //μ—¬κΈ°μ„œ 컴파일 μ—λŸ¬κ°€ λ°œμƒν•œλ‹€..
        }
    }

    class MainApp
    {
        static void Main(string[] args)
        {
            Configuration c = new Configuration(100,10);
        } 
    }
}

μ•„λž˜ μ½”λ“œμ—μ„œμ²˜λŸΌ 읽기 μ „μš© ν•„λ“œλŠ” μƒμ„±μž μ•ˆμ—μ„œλ§Œ μ΄ˆκΈ°ν™”κ°€ κ°€λŠ₯ν•˜λ‹€.

λ§Œμ•½ μƒμ„±μžκ°€ μ•„λ‹Œ λ‹€λ₯Έ λ©”μ†Œλ“œμ—μ„œ 읽기 μ „μš© ν•„λ“œλ₯Ό μˆ˜μ •ν•˜λ €λŠ” μ‹œλ„κ°€ λ°œμƒν•˜λ©΄ 컴파일 μ—λŸ¬κ°€ μΌμ–΄λ‚œλ‹€.

using System;
using System.Collections;
using System.Collections.Generic;
using System.Globalization;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using static System.Console;

namespace Overriding
{
    class Configuration
    {
        private readonly int min;
        private readonly int max;

        public Configuration(int v1, int v2)
        {
            min = v1;
            max = v2;
        }

    }

    class MainApp
    {
        static void Main(string[] args)
        {
            Configuration c = new Configuration(100,10);
        } 
    }
}
728x90