내일배움캠프 8일차 TIL <C# 삼항연산자> 04/16

정광훈(Unity_9기)·2025년 4월 16일

TIL (Today I Learned)

목록 보기
20/110
post-thumbnail

삼항연산자

● 오늘 있었던 일

C# 텍스트 RPG 프로젝트 진행 중
상점 조건으로 아이템을 구매했을 때, 이미 구매 완료한 아이템은 구매 완료 아닐 경우 아이템 가격을 그대로 출력하는 것이었다.이 조건을 어떻게 해결할지 생각하다가 처음에는 감이 안 잡혀 검색을 했다.
그러다
string StrItemPur = list[i].itemPur ? "구매 완료" : $"{list[i].itemPrice} G";
이런 문장을 발견했고 (이 문장은 내가 실제 코드에 적용하기 위해 조금 수정한 것) 어떻게 사용되는 건지 찾아봤다.


● 삼항연산자

// ?를 사용할 경우
object tmp = {조건} ? {참(true)일 경우 return값} : {거짓(false)일 경우 return값} 
  • object tmp = {조건} ? {"A"} : {"B"}
    조건을 충족 하는 경우: A 출력 // tmp에 "A" 반환
    조건을 충족 하지 않는 경우: B 출력 // tmp에 "B" 반환
// ??를 사용할 경우
object tmp = null;
object result = tmp ?? {tmp가 null일 경우 result에 return값}
  • object tmp = null;
    object result = tmp ?? {"A"}
    Console.Write(${tmp} {result});
    출력: (빈공간) A // tmp가 null이 아닐 경우: result에 "B"를 반환

  • object tmp = "B";
    object result = tmp ?? {"A"}
    출력: B B // tmp가 null이 아닐 경우: result에 "B"를 반환


● 해결

string StrItemPur = list[i].itemPur ? "구매 완료" : $"{list[i].itemPrice} G"; // 해당 list[i].itemPur이 현재 True인지 False인지 판별하고, 가격을 표시할 건지 구매 완료를 표시할 건지

참고로 bool itemPur 이다.

for (int i = 0; i < list.Count; i++) // 아이템 불러오기
{
	string StrItemPur = list[i].itemPur ? "구매 완료" : $"{list[i].itemPrice} G"; // 가격을 표시할 건지 구매 완료를 표시할 건지
    
	if (list[i].itemType == "공격력")
	{
		Console.WriteLine($"- {list[i].itemName}  | {list[i].itemType} +{list[i].itemAtt}  | {list[i].itemInfo}  | {StrItemPur}");
	}
    
	else
	{
		Console.WriteLine($"- {list[i].itemName}  | {list[i].itemType} +{list[i].itemDf}  | {list[i].itemInfo}  | {StrItemPur}");
	}
}
출력
(앞내용 생략) ... 1000 G // 해당 아이템을 안 샀을 경우
(앞내용 생략) ... 구매 완료 // 해당 아이템을 샀을 경우

0개의 댓글