프로그래밍/c#

속성(C# 프로그래밍 가이드)

yonan 2020. 8. 23. 12:49

속성은 전용 필드의 값을 읽거나 쓰거나 계산하는 유연한 메커니즘을 제공하는 멤버입니다. 공용 데이터 멤버인 것처럼 속성을 사용할 수 있지만, 실제로 접근자라는 특수 메서드입니다. 이렇게 하면 데이터에 쉽게 액세스할 수 있으며 메서드의 안전성과 유연성 수준을 올리는 데에도 도움이 됩니다.

 

  • 속성을 사용하면 클래스가 구현 또는 검증 코드를 숨기는 동시에 값을 가져오고 설정하는 방법을 공개적으로 노출할 수 있습니다.

  • get 속성 접근자는 속성 값을 반환하는 데 사용되고 set 속성 접근자는 새 값을 할당하는 데 사용됩니다. 이러한 접근자는 각기 다른 액세스 수준을 가질 수 있습니다. 자세한 내용은 접근자 액세스 가능성 제한을 참조하세요.

  • value 키워드는 set 접근자가 할당하는 값을 정의하는 데 사용됩니다.

  • 속성은 읽기/쓰기(get  set 접근자 모두 포함), 읽기 전용(get 접근자는 포함하지만 set 접근자는 포함 안 함) 또는 쓰기 전용(set 접근자는 포함하지만 get 접근자는 포함 안 함)일 수 있습니다. 쓰기 전용 속성은 거의 없으며 주로 중요한 데이터에 대한 액세스를 제한하는 데 사용됩니다.

  • 사용자 지정 접근자 코드가 필요 없는 단순한 속성은 식 본문 정의나 자동 구현 속성으로 구현할 수 있습니다.

 

using System;

public class Person
{
   private string _firstName;
   private string _lastName;

   public Person(string first, string last)
   {
      _firstName = first;
      _lastName = last;
   }

   public string Name => $"{_firstName} {_lastName}";
}

public class Example
{
   public static void Main()
   {
      var person = new Person("Magnus", "Hedlund");
      Console.WriteLine(person.Name);
   }
}
// The example displays the following output:
//      Magnus Hedlund

 

 

C# 7.0부터 get  set 접근자 모두를 식 본문 멤버로 구현할 수 있습니다. 이 경우 get  set 키워드가 있어야 합니다. 다음 예제에서는 두 접근자에 대해 식 본문 정의를 사용하는 방법을 보여 줍니다. return 키워드는 get 접근자와 함께 사용하지 않습니다.

 

using System;

public class SaleItem
{
   string _name;
   decimal _cost;

   public SaleItem(string name, decimal cost)
   {
      _name = name;
      _cost = cost;
   }

   public string Name
   {
      get => _name;
      set => _name = value;
   }

   public decimal Price
   {
      get => _cost;
      set => _cost = value;
   }
}

class Program
{
   static void Main(string[] args)
   {
      var item = new SaleItem("Shoes", 19.95m);
      Console.WriteLine($"{item.Name}: sells for {item.Price:C2}");
   }
}
// The example displays output like the following:
//       Shoes: sells for $19.95

자동으로 구현된 속성

경우에 따라 get 속성과 set 접근자에서 지원 필드에 값을 할당하거나 지원 필드에서 값을 검색하기만 하고 추가 논리를 포함하지 않을 수 있습니다. 자동 구현 속성을 사용하면 코드를 간소화할 수 있을 뿐 아니라 C# 컴파일러에서 지원 필드를 투명하게 제공하도록 할 수 있습니다.

속성에 get  set 접근자가 모두 포함된 경우 두 접근자를 모두 자동 구현해야 합니다. 구현을 제공하지 않고 get  set 키워드를 사용하여 자동 구현 속성을 정의합니다. 다음 예제에서는 Name  Price가 자동 구현 속성인 점만 제외하고 이전 예제와 동일합니다. 이 예제에서는 매개 변수화된 생성자도 제거하므로 이제 SaleItem 개체가 매개 변수 없는 생성자 및 개체 이니셜라이저에 대한 호출을 통해 초기화됩니다.

 

using System;

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

   public decimal Price
   { get; set; }
}

class Program
{
   static void Main(string[] args)
   {
      var item = new SaleItem{ Name = "Shoes", Price = 19.95m };
      Console.WriteLine($"{item.Name}: sells for {item.Price:C2}");
   }
}
// The example displays output like the following:
//       Shoes: sells for $19.95

https://docs.microsoft.com/ko-kr/dotnet/csharp/programming-guide/classes-and-structs/properties

 

속성 - C# 프로그래밍 가이드

C#의 속성은 접근자 메서드를 사용하여 공용 데이터 멤버인 것처럼 private 필드의 값을 읽고, 쓰고, 계산하는 멤버입니다.

docs.microsoft.com

 

 

'프로그래밍 > c#' 카테고리의 다른 글

코루틴(일정간격이후 호출) unity  (0) 2020.10.10
코루틴이란  (0) 2020.09.02
IEnumerator와 IEnumerable 사용법  (0) 2020.09.02
C# 델리게이트  (0) 2020.08.25
[RequireComponent]C# 유니티  (0) 2020.08.23