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
이 설정하려는 잠재적 값 중 하나와 동일 하기 때문에 작동 합니다. 다른 모든 경우에는 첫 번째 예제에서 보여준 것처럼 조건부 연산자를 사용해야합니다.
병합 연산자 (?) 당신은 내가 믿고, 원하는 것입니다.
내 생각 엔 당신이 생각 해낼 수있는 최선은
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 # 통합 연산자를 찾고 있습니다. ??. 이 연산자는 왼쪽과 오른쪽 인수를받습니다. 연산자의 왼쪽이 null이거나 값이없는 nullable이면 오른쪽 인수를 반환합니다. 그렇지 않으면 왼쪽을 반환합니다.
var x = somePossiblyNullValue ?? valueIfNull;
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;
@Dave 의 대답 을 확장하려면 ... planRec.approved_by가 이미 문자열 인 경우
this.approved_by = planRec.approved_by ?? "";
실제 변수 이름을 반복하지 않고 (그리고 변수가 null이면 아무것도 할당하지 않고) 비어 있지 않은 변수를 할당하려면 Action
매개 변수 와 함께 작은 도우미 메서드를 사용할 수 있습니다 .
public static void CallIfNonEmpty(string value, Action<string> action)
{
if (!string.IsNullOrEmpty(value))
action(value);
}
그런 다음 사용하십시오.
CallIfNonEmpty(this.approved_by, (s) => planRec.approved_by = s);
예를 들어 SQL Server, Google ISNULL
및 CASE
내장 함수 와 같은 쿼리에서도이를 수행 할 수 있습니다 .
C # 8.0부터는 ?? = 연산자를 사용하여 양식의 코드를 바꿀 수 있습니다.
if (variable is null)
{
variable = expression;
}
다음 코드로 :
variable ??= expression;
자세한 정보는 여기
확장 방법 SelfChk를 사용합니다.
static class MyExt {
//Self Check
public static void SC(this string you,ref string me)
{
me = me ?? you;
}
}
그런 다음
string a = null;
"A".SC(ref a);
'developer tip' 카테고리의 다른 글
Android WebView에서 확대 / 축소 활성화 / 비활성화 (0) | 2020.11.19 |
---|---|
각도 4 단위 테스트 오류`TypeError : ctor is not a constructor` (0) | 2020.11.19 |
입력 IP가 특정 IP 범위에 속하는지 확인하는 방법 (0) | 2020.11.19 |
신속한 배열의 고유 값 (0) | 2020.11.19 |
핵심 데이터 및 iOS 7 : 영구 저장소의 다른 동작 (0) | 2020.11.18 |