λ³Έλ¬Έ λ°”λ‘œκ°€κΈ°
πŸ–₯️/C#

[C#] ν”„λ‘œνΌν‹°

by HanaV 2023. 8. 18.
728x90

μžλ°”μ—μ„œ 클래슀의 멀버 λ³€μˆ˜μ— μ ‘κ·Ό(값을 getν•˜κ±°λ‚˜ setν•  λ•Œ)ν•  λ•Œ getter와 setterλ₯Ό λ§Œλ“ λ‹€. μ΄λ ‡κ²Œ ν•˜λŠ” μ΄μœ λŠ” 데이터 은닉성과 μΊ‘μŠν™”λ₯Ό μœ„ν•΄μ„œμ΄λ‹€. 일반적으둜 public λ©”μ„œλ“œ μ•ˆμ— private ν•„λ“œκ°€ μ„ μ–Έλœλ‹€.

public class Person {
    private String name;

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }
}

 

ν”„λ‘œνΌν‹°

C#μ—μ„œλ„ λ™μΌν•˜κ²Œ getter와 setter λ©”μ„œλ“œλ₯Ό κ΅¬ν˜„ν•  수 μžˆλ‹€.

ν•˜μ§€λ§Œ C#μ—μ„œλŠ” ν”„λ‘œνΌν‹°λΌλŠ” 것을 μ œκ³΅ν•œλ‹€. ν”„λ‘œνΌν‹°λ„ ν”„λ‘œνΌν‹°λŠ” λ©”μ„œλ“œκ°€ μ•„λ‹ˆλΌ ν•„λ“œμ™€ 같은 ν˜•νƒœλ‘œ μ‚¬μš©λ˜λ©°, λ‚΄λΆ€μ μœΌλ‘œ μžλ™ μƒμ„±λœ getter와 setter λ©”μ„œλ“œλ₯Ό 가지고 μžˆλ‹€.

public class Person {
    private string name;

    public string Name {
        get { return name; }
        set { name = value; }
    }
}

get, set을 λ©”μ„œλ“œλ‘œ κ΅¬ν˜„ν–ˆμ„ λ•ŒλŠ” 값을 뢈러올 λ•ŒλŠ” .getName(), 값을 μ„€μ •ν•  λ•ŒλŠ” .setName() 둜 ν•˜μ§€λ§Œ, ν”„λ‘œνΌν‹°λ₯Ό μ‚¬μš©ν•˜λ©΄ 값을 뢈러올 λ•Œλ‚˜ μ„€μ •ν•  λ•Œλ‚˜ λ‘˜ λ‹€ .Name으둜 뢈러올 수 μžˆλ‹€.

 

μžλ™ κ΅¬ν˜„ ν”„λ‘œνΌν‹°

μžλ™ κ΅¬ν˜„ ν”„λ‘œνΌν‹°λ‘œ μš°λ¦¬λŠ” 훨씬 더 κ°„λ‹¨ν•˜κ²Œ μ½”λ“œλ₯Ό 지 μˆ˜λ„ μžˆλ‹€. μžλ™ κ΅¬ν˜„ ν”„λ‘œνΌν‹°λŠ” λͺΈμ²΄λ„ λ‹€ μž‘μ„±ν•˜μ§€ μ•Šκ³ λ„ ν”„λ‘œνΌν‹°λ₯Ό μ •μ˜ν•  수 있게 ν•΄μ€€λ‹€.

public class Person {
    public string Name { get; set; }
}

μ΄λ ‡κ²Œ ν•œ μ€„λ‘œ κΉ”λ”ν•˜κ²Œ λ‚˜νƒ€λ‚Ό 수 μžˆλ‹€. ν•„λ“œλ₯Ό μ„ μ–Έν•  ν•„μš”λ„ μ—†κ³ , κ·Έλƒ₯ get; set;만 μ„ μ–Έν•΄μ£Όλ©΄ λœλ‹€.

μ΄ˆκΈ°ν™”λ„ μˆ˜ν–‰ν•  수 μžˆλ‹€.

public class Person {
    public string Name { get; set; } = "Unknown";
}

아무것도 setν•˜μ§€ μ•Šμ€ μƒνƒœμ—μ„œ .Name으둜 λΆˆλŸ¬μ˜¨λ‹€λ©΄, 기본값인 Unknown이 λ‚˜μ˜¬ 것이닀.

λ§Œμ•½ 객체λ₯Ό μƒμ„±ν•˜κ³  λ‚˜μ„œ 각 ν•„λ“œλ₯Ό μ΄ˆκΈ°ν™”ν•˜κ³  μ‹Άλ‹€λ©΄, μ•„λž˜μ™€ 같이 μ΄ˆκΈ°ν™”λ₯Ό ν•˜κ³  싢은 ν”„λ‘œνΌν‹°λ§Œ μž…λ ₯ν•˜λ©΄ λœλ‹€.

class Person 
{
    public string Name { get; set; }
    public int Age { get; set; }
}

class MainApp 
{
	static void Main(string[] args)
    {
    	Person person = new Person() 
        {
            Name = "John",
            // Age = 30 으둜 μ΄ˆκΈ°ν™” 해도 되고, μ•ˆν•΄λ„ 되고
        };
    }
}

 

읽기 μ „μš© ν”„λ‘œνΌν‹°

읽기 μ „μš©μœΌλ‘œ μ„ μ–Έν•˜λŠ” 방법도 맀우 κ°„λ‹¨ν•˜λ‹€. 값을 λ³€κ²½ν•  수 μ—†κ²Œ ν•˜λŠ” κ²ƒμ΄λ―€λ‘œ set λŒ€μ‹ μ— init을 적으면 λœλ‹€.

public class Person {
    public string Name { get; init; }
}

 

μΈν„°νŽ˜μ΄μŠ€, 좔상 ν΄λž˜μŠ€μ—μ„œλ„ ν”„λ‘œνΌν‹° μ‚¬μš©ν•˜κΈ°

μΈν„°νŽ˜μ΄μŠ€μ—μ„œλ„ ν”„λ‘œνΌν‹°λ₯Ό κ΅¬ν˜„ν•  수 μžˆλ‹€.

public interface IExampleInterface {
    string Property1 { get; set; }
    int Property2 { get; init; }
}

public class ExampleClass : IExampleInterface {
    public string Property1 { get; set; }
    public int Property2 { get; init; } = 42; // 읽기 μ „μš© ν”„λ‘œνΌν‹° μ΄ˆκΈ°ν™”
}

 

μΆ”μƒν΄λž˜μŠ€μ—μ„œλ„ ν”„λ‘œνΌν‹°λ₯Ό κ΅¬ν˜„ν•  수 μžˆλ‹€. ν”„λ‘œνΌν‹°λ„ κ΅¬ν˜„μ΄ μ—†κ³  μ„ μ–Έλ§Œ λ˜μ–΄μžˆκ²Œ ν•˜κ³  μ‹ΆμœΌλ©΄, abstract을 λΆ™μ—¬μ„œ 좔상 ν”„λ‘œνΌν‹°λ₯Ό λ§Œλ“€λ©΄ λœλ‹€. 좔상 ν”„λ‘œνΌν‹°λ„ νŒŒμƒ ν΄λž˜μŠ€μ—μ„œ λ°˜λ“œμ‹œ κ΅¬ν˜„λ˜μ–΄μ•Ό ν•œλ‹€.

public abstract class Vehicle {
    // 좔상 ν”„λ‘œνΌν‹°
    public abstract string Type { get; }

    // 일반 ν”„λ‘œνΌν‹°
    public string Model { get; set; }

    // 좔상 λ©”μ„œλ“œ
    public abstract void Start();

    // 일반 λ©”μ„œλ“œ
    public void DisplayInfo() {
        Console.WriteLine($"Type: {Type}, Model: {Model}");
    }
}

public class Car : Vehicle {
    // 좔상 ν”„λ‘œνΌν‹° κ΅¬ν˜„
    public override string Type => "Car";

    // 좔상 λ©”μ„œλ“œ κ΅¬ν˜„
    public override void Start() {
        Console.WriteLine("Car is starting.");
    }
}

class Program {
    static void Main(string[] args) {
        Car car = new Car();
        car.Model = "BMW";
        car.Start();
        car.DisplayInfo();
    }
}

/*Console: 
Car is starting.
Type: Car, Model: BMW
*/
728x90

"); wcs_do();