[c#] null을 확인하고 그렇지 않은 경우 다른 값을 할당하는 가장 짧은 방법

나는 당기는하고 varcharDB를 밖으로 값과 설정하려는 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;

자세한 정보는 여기