728x90
보통 클래스를 정의할 때, get, set 연산자를 쓴다.
get연산자는 값을 가져올 때, set연산자는 값을 설정할 때 쓰는것 같다.
public class Person
{
public string Name { get; set; }
}
이런식으로 구현된 코드는 자동구현 속성이다.
자동구현 속성 대신 명시적으로 속성의 동작을 정의할 수도 있다.
public class Person
{
private string name;
public string Name
{
get { return name; }
set { name = value; }
}
}
name 변수는 private로 설정해두고, Name으로 접근하여 값을 설정하고, 반환하는 형태로도 만들 수 있다.
이때 set에 사용하는 value는 C#에서 주로 사용되는 속성이다.
value는 set접근자에 할당된 값을 가리킨다.
추가로, private로 선언된 name은 백킹 필드라고도 한다.
public class Person
{
private string name;
public Person(string name)
{
this.name = name;
}
public string Name
{
get { return name; }
}
}
이런식으로 set연산자를 선언하지 않으면 값을 그냥 읽기만 할 수 있다.
public class Person
{
private string name;
public string Name
{
set { name = value; }
}
}
마찬가지로 get연산자를 쓰지 않으면 값을 쓰기만 할 수 있다.
public class Person
{
private int age;
public int Age
{
get { return age; }
set
{
if (value < 0)
throw new ArgumentException("Age cannot be negative");
age = value;
}
}
}
이런식으로 속성에 로직을 추가할 수도 있는데, age는 0이하가 될 수 없으므로, 0이하의 값이 들어왔을 땐, Exception을 전달하여 오류가 나도록 설정할 수도 있다.
public class Rectangle
{
public double Width { get; set; }
public double Height { get; set; }
public double Area
{
get { return Width * Height; }
}
}
이런식으로 백킹 필드가 없는 구조도 만들 수 있다.
Area는 항상 width와 height를 곱한 값만 반환하게 된다.
이를 표현식으로도 나타낼 수 있다.
public class Rectangle
{
public double Width { get; set; }
public double Height { get; set; }
// 계산된 속성을 표현식 본문으로 작성
public double Area => Width * Height;
}
=> 연산자는 표현식을 만드는 연산자로, 계산된 값을 Area로 전달한다.
표현식에 관하여 함수에서도 표현식을 쓸 수 있다.
public int Add(int a, int b) => a + b;
//아래와 동일하다.
public int Add(int a, int b){
return a + b;
}
표현식은 반환한다고 생각하고 구현하면 될 것 같다.
public class Person
{
public string Name { get; private set; }
public Person(string name)
{
Name = name;
}
}
또한, set연산자 앞에 private를 붙여 클래스 외부에서 값을 수정하지 못하도록 설정할 수 있다.
728x90
'Develop > Unity' 카테고리의 다른 글
[Unity] 씬을 전환할 때 로딩을 걸어보자 - 씬 비동기 로딩, 로딩창 구현 (0) | 2024.07.03 |
---|---|
[Unity] 회원가입 시 주소 입력이 필요할때 (우편코드 및 도로명주소) - 행정안전부 도로명주소 api (0) | 2024.07.02 |
[Unity] 갑자기 스크립트 리로딩이 안될때 - 스크립트 수정 후 유니티에서 리로딩을 안할때 (0) | 2024.06.20 |
[Unity] 캐스팅이 뭘까? - 유니티에서 활용하는 키워드 'as' (0) | 2024.06.19 |
[Unity] 파이 그래프(원 그래프)를 만들어보자! (0) | 2024.06.13 |