developer tip

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

copycodes 2020. 11. 19. 21:39
반응형

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이 설정하려는 잠재적 값 중 하나와 동일 하기 때문에 작동 합니다. 다른 모든 경우에는 첫 번째 예제에서 보여준 것처럼 조건부 연산자를 사용해야합니다.


병합 연산자 (?) 당신은 내가 믿고, 원하는 것입니다.


내 생각 엔 당신이 생각 해낼 수있는 최선은

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 ISNULLCASE내장 함수 와 같은 쿼리에서도이를 수행 할 수 있습니다 .


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);

참고 URL : https://stackoverflow.com/questions/1120557/shortest-way-to-check-for-null-and-assign-another-value-if-not

반응형