표현식 본문 멤버 및 파라미터 set 심화버전, 파라미터 델리게이트 적용 예시
2024. 11. 18. 11:49ㆍ카테고리 없음
표현식 본문 멤버란?
C#에서 => 연산자를 사용해 메서드나 속성의 본문을 한 줄로 표현할 수 있는 기능이다.
언제 사용하는가?
메서드나 속성의 내용이 단순히 한 줄로 끝나는 경우에 사용
메서드에 => 적용하기
함수에서 코드가 한줄 들어가므로 => 연산자를 사용해서 간견하게 작성했다.
사용 예시1
public enum SceneType
{
StartScene,
MapChoiceScene,
CarScene,
LevelScene,
MainScene
}
public class GameManager : MonoSingleton<GameManager>
{
public void LoadScene(SceneType sceneType)
{
SceneManager.LoadScene($"{sceneType.ToString()}");
}
// Button 전용 메서드
public void LoadStartScene() => LoadScene(SceneType.StartScene);
public void LoadMapChoiceScene() => LoadScene(SceneType.MapChoiceScene);
public void LoadCarScene() => LoadScene(SceneType.CarScene);
public void LoadLevelScene() => LoadScene(SceneType.LevelScene);
public void LoadMainScene() => LoadScene(SceneType.MainScene);
}
사용 예시2
public int GetNumber() => 42;
단순 값을 반환하기만 할때 그냥 반환값을 적으면 된다.
밑에 코드랑 위에코드랑 기능이 같다.
public int GetNumber()
{
return 42;
}
정리
본문이 한 줄로 끝나는 메서드에 괄호( {} )넣는 대신에 => 이거 사용, 반환값만 반환할려고 할떄 => 이거 사용하면 바로 반환
속성에 => 적용하기
변하는 필드값에 의해서 값이 변화할때 사용하면 좋음
private int _health = 100;
private int _damage = 20;
public int Health => _health;
public int AttackPower => _damage * 2;
public bool IsAlive => _health > 0;
파라미터set에 적용 예시
public class Player
{
private int _health;
// 체력 속성
public int Health
{
get => _health;
set
{
_health = value;
IsAlive = _health > 0; // 체력 변경 시 생존 상태도 업데이트
}
}
// 생존 상태는 체력에 따라 결정
public bool IsAlive { get; private set; }
// 현재 상태 메시지
public string Status => IsAlive ? "Alive" : "Dead";
}
파라미터set 델리게이트 적용 예시
public class Example
{
public delegate void LevelChangedHandler(int newLevel);
public event LevelChangedHandler OnLevelChanged;
private int _level;
public int Level
{
get => _level;
set
{
_level = value;
OnLevelChanged?.Invoke(_level); // 델리게이트 호출
}
}
}