[C#] C # 6의 긴 문자열 보간 라인

기존 코드베이스의 문자열 형식 호출에 적용 할 때 문자열 보간이 실제로 좋지만 일반적으로 선호되는 열 제한을 고려하면 문자열이 한 줄에 비해 너무 길어집니다. 특히 보간되는 표현식이 복잡한 경우. 형식 문자열을 사용하면 여러 줄로 나눌 수있는 변수 목록이 있습니다.

var str = string.Format("some text {0} more text {1}",
    obj1.property,
    obj2.property);

누구 든지이 선을 깨는 선호하는 수단이 있습니까?

나는 당신이 다음과 같은 것을 할 수 있다고 생각합니다 :

var str = $"some text { obj1.property }" +
  " more text { obj2.property };



답변

당신은 수있는 여러 라인으로 라인을 중단,하지만 난 더 이상 구문 외모의 좋은 말을하지 않을 것입니다.

$@보간 된 그대로의 문자열 을 사용하려면 구문을 사용해야 하며 다음 {...}과 같이 매개 변수 안에 개행을 넣을 수 있습니다 .

string s = $@"This is all {
    10
    } going to be one long {
    DateTime.Now
    } line.";

위의 문자열에는 줄 바꿈이 없으며 실제로 다음과 같은 내용이 있습니다.

이것은 모두 10 개의 긴 01.08.2015 23.49.47 라인이 될 것입니다.

(참고, 노르웨이어 형식)

이제, 나는 사용을 중단하지 않을 것이라고 말했다 string.Format. 제 생각에는 이러한 문자열 보간 표현식 중 일부는 실제로 좋아 보이지만 더 복잡한 표현식은 읽기가 매우 어려워지기 시작합니다. 를 사용하지 않으면 FormattableString코드가 String.Format어쨌든 호출로 컴파일 된다는 것을 고려할 때 , 나는 String.Format그것이 의미 가 있는 곳으로 계속 가야한다고 말합니다 .


답변

문자열 보간과 여러 줄 문자열 리터럴을 얻기 위해 결합 $하고 @함께 사용할 수 있습니다 .

var str = $@"some text { obj1.property }
     more text { obj2.property }";

그러나 그 NewLine사이에 캐릭터가 생길 것이므로 원하는 것이 아닐 수도 있습니다.


답변

OP가 다른 것을 요구했지만이 질문을 읽는 많은 사람들이 다음과 같이 $""작동 하는 멀티 라인 보간 을 원할 것으로 기대 합니다 @"". 그렇게하려면$@""

$@"Height: {height}
Width: {width}
Background: {background}"


답변

이거 야:

var str = $"some text { obj1.property }" +
          $" more text { obj2.property }";

두 번째 주 $의를$"..." + $"..."


답변

재정의 된 ToString () 내에서 StringBuilder를 예로 사용했습니다.

    // return employee data
    public override string ToString()
    {
        StringBuilder buffer = new StringBuilder();
        buffer.AppendLine($"Number: {EmployeeNumber}");
        buffer.AppendLine($"Name: {EmployeeName}");
        buffer.AppendLine($"Address: {PostalAddress}");
        buffer.AppendLine($"Phone: {PhoneNumber}");
        buffer.AppendLine($"Age: {EmployeeAge}");
        buffer.AppendLine($"Gender: {EmployeeGender}");
        buffer.AppendLine($"Status: {EmployeeStatus}");
        buffer.AppendLine($"Manager: {EmployeeManager}");
        buffer.AppendLine($"Start: {EmployeeStartDate.ToShortDateString()}");
        return buffer.ToString();
    }


답변