[c#] null을 확인하고 그렇지 않은 경우 다른 값을 할당하는 가장 짧은 방법
나는 당기는하고 varchar
DB를 밖으로 값과 설정하려는 string
만약 그들이 “”나는이에 할당 오전 null
. 나는 현재 다음과 같이하고 있습니다.
if (string.IsNullOrEmpty(planRec.approved_by) == true)
this.approved_by = "";
else
this.approved_by = planRec.approved_by.toString();
다음과 같이 한 줄로이 작업을 수행하는 방법이 있어야합니다.
this.approved_by = "" || planRec.approved_by.toString();
그러나이를 수행하는 최적의 방법을 찾을 수 없습니다. 더 나은 방법이 있습니까, 아니면 내가 할 수있는 가장 좋은 방법이 있습니까?
답변
이 시도:
this.approved_by = IsNullOrEmpty(planRec.approved_by) ? "" : planRec.approved_by.toString();
다른 사람이 말했듯이 null 통합 연산자를 사용할 수도 있습니다.
this.approved_by = planRec.approved_by ?? planRec.approved_by.toString();
그러나이 예제는 가능한 값 this.approved_by
이 설정하려는 잠재적 값 중 하나와 동일 하기 때문에 작동 합니다. 다른 모든 경우에는 첫 번째 예에서 보여준 것처럼 조건부 연산자를 사용해야합니다.
답변
병합 연산자 (?) 당신은 내가 믿고, 원하는 것입니다.
답변
C # 통합 연산자를 찾고 있습니다. ??. 이 연산자는 왼쪽과 오른쪽 인수를받습니다. 연산자의 왼쪽이 null이거나 값이없는 nullable이면 오른쪽 인수를 반환합니다. 그렇지 않으면 왼쪽을 반환합니다.
var x = somePossiblyNullValue ?? valueIfNull;
답변
내 생각 엔 당신이 생각 해낼 수있는 최선은
this.approved_by = IsNullOrEmpty(planRec.approved_by) ? string.Empty
: planRec.approved_by.ToString();
물론 당신은 그 사실을 암시하고 있기 때문에 approved_by
입니다 object
(이 수 동일하지 “”),이 같이 다시 작성 될 것이다
this.approved_by = (planRec.approved_by ?? string.Empty).ToString();
답변
C # 6에서는 planRec.approved_by가 문자열이 아닌 경우 약간 더 짧은 방법이 있습니다.
this.approved_by = planRec.approved_by?.ToString() ?? "";
답변
C # 통합 연산자를 사용합니다. ??
// if Value is not null, newValue = Value else if Value is null newValue is YournullValue
var newValue = Value ?? YourNullReplacement;
답변
C # 8.0부터는 ?? = 연산자를 사용하여 양식의 코드를 바꿀 수 있습니다.
if (variable is null)
{
variable = expression;
}
다음 코드로 :
variable ??= expression;
자세한 정보는 여기