IT

'+'연산 초기 연결

lottoking 2020. 9. 14. 21:21
반응형

'+'연산 초기 연결


string클래스 메타 데이터를 보면 연산자 ==!=오버로드 만 시청 . 설명 ' +'연산자에 대한 연결을 어떻게 수행 할 수 있습니까?

편집 :

링크 연결에 대한 Eric Lippert의 흥미로운 메모 :

1 부

2 부

2 부 ( http://www.joelonsoftware.com/articles/fog0000000319.html )에 언급 된 Joel의 슈퍼 기사도 있습니다.


언어 -C # 컴파일러는 :)

그래서이 코드 :

string x = "hello";
string y = "there";
string z = "chaps";
string all = x + y + z;

실제로 다음과 같이 조치합니다.

string x = "hello";
string y = "there";
string z = "chaps";
string all = string.Concat(x, y, z);

(Gah- 개입 편집은 실수로 다른 비트를 제거했습니다.)

여기에 여러 개의 문자열 연결이 있음 을 인식하는 C 번호의 이점은 컴파일러 중간 문자열을 생성하지 않고 x + y연결의 일부로 다시 복사해야 우리한다는을 구석으로 입니다. 대신 한 번에 모든 작업을 수행합니다.(x + y)z

편집 : 루프에서 연결하면 컴파일러 가 아무것도 할 수 없습니다 . 예를 들어 다음 코드는 다음과 가변합니다.

string x = "";
foreach (string y in strings)
{
    x += y;
}

다음과 같이 끝납니다.

string x = "";
foreach (string y in strings)
{
    x = string.Concat(x, y);
}

... 이것은 그래서 않는 쓰레기를 많이 생성하고,이 사용해야하는 당신 이유입니다 StringBuilder같은 경우에. 많은 질문에 더 답할 수 있도록 두 가지에 대해 자세히 설명 하는 기사 가 있습니다 .

참고 URL : https://stackoverflow.com/questions/10341188/string-concatenation-using-operator

반응형