본문 바로가기
[ Program ]/c#스터디

10.변수연산 문자형 / 문자열 보간

by 관이119 2021. 9. 20.





문자형 변수를 연산을 하면 이전에 설명한것과 같이 1+1 = 창문 같은 느낌이다.

말그대로 문자를 연결하는것이다.

 

 

int a = 2;

int b = 3;

a+b 를 출력하면 5 가나오고

 

string a = "2";

string b = "3";

a+b 를 출력하면 "23" 이 나온다는 의미이다.

 

이내용은 프로그램언어뿐만 아니라 DB를 다룰때도 동일한 개념이다.

 

 

그림1

 

실제 c# 에서는 그림1과 같이 문자연산을 하면 새로운 주소를 할당받아 거기에 값을 쓰기때문에 문자열 연산은 상당히 느린편이다.

그림에 대한 내용은 이미 앞에서 충분히 학습해서 이해하리라 생각한다.

a의 위치에 b의 문자열을 바로 연결하면 공간을 많이 차지하지도 않고  새롭게 a+b의 공간을 할당할 일도 없고 다좋을텐데 왜 새로운 공간을 할당할까?

메모리에 데이터는 순차적으로 쓰여지며 불필요한 공간을 미리 할당해두지 않기때문에 위와같이 새로운위치를 잡아서 값을 넣게 되기 때문이다.

 

결국 반복적으로 문자를 컨트롤 해야 하는 경우가 발생할때는 위와 같은 연산은 상당히 문제가 되는 코드가 될 수 있다.

문자를 저렇게 더해야 하는 경우가 실제로 있을까 생각들수도 있겠지만 프로그램을 하다보면 상당히 그런경우가 많이 발생한다.

예를 들면 파일에서 필요한 문자들만 읽어와서 새로운파일을 생성할경우 위와같은 연산은 필수적일수 밖에없다.

위와같은 문제를 마이크로소프트에서도 인식해서 stringbuilder 라는 것을 따로 만들었는데 해당내용은 나중에 다시 설명한다.

 

 

하지만 짧은문자열을 더할때는 예를 들면 그림1과 같이 a와 b 두개 단어정도를 더하는데는 +를 여전히 사용한다.

실제 가독성(사람이 읽어서 이해하기 편한정도) 는 + 가 훨씬 좋기때문이다.

단순하게 한두개 문자열 연결할때는 + 를 사용하고 반복적으로 많은 문자를 연산할경우는 stringbuilder 를 사용한다정도로 알아두도록하자.

 

 

짧은 몇개의 문자를 더할때는 그림1과 같이 a+b 와 같이 표현하기도 하지만 문자열 보간 이라는 것을 사용하기도 한다.

사용법은 아래와 같다.

 

$" {문자1} 다른내용 {문자2} ";

$"  내용  {  외부변수 }  ";

 

형식만 봐서는 이해가 되지 않는다 예제를 보자.

 

-예제1

string a = "가";
string b = "나";
string c = a + "다른글씨들" + b;

 

-예제2

string a = "가";
string b = "나";
string c = $"{a} 다른글씨들 {b}";

 

 

위 예제1이 전통적인 문자열을 + 로 표시해주는 방법이고 예제2는 문자열보간을 사용한 방식이다.

위예제에서는 + 방식이 가독성이 더좋은데 길어지고 복잡해지면 문자열 보간을 사용한 방식이 가독성이 좋아진다.

다음예제를 보자

(프로그램에서 " 나 ' 자체 등 특수문자들을 표현하고 싶을때는 앞에 \ 를 붙여줘야한다.)

 

-예제3

string a = "가";
string b = "나";
string c = "  \'" + a + "\' 의 집에 \'" + b + "\'가 놀러갔다";

 

-예제4

string a = "가";
string b = "나";
string c = $"  '{a}' 의 집에 '{b}' 가 놀러갔다";

 

 

위의 예제 3이 + 를 사용한 방법이고 예제4가 문자열 보간을 사용한 방식이다.

당연히 4가 훨씬 읽기 쉽다.

글이 길어질수록 문자열 보간이 훨씬 좋은 선택이 된다.

 

 

문자열 보간이 나오기 전에 아래와 같은 형식으로 작성하던 경우도 있었다.

string a = "가";
string b = "나";
string c = String.Format("'{0}' 의 집에 '{1}' 가 놀러갔다.", a, b);

위코드는 현재는 잘쓰지 않는 코드로 0의 위치부터 뒤에 , 의 앞에 있는 순서대로 넣는것이다.

즉 0 에는 a 를 1 에는 b 를 넣는다.

어차피 비슷하게 생겼으므로 다른사람의 코드를 분석할때 위와 같은 형식으로 코딩되어있다면 문자열 보간을 떠올리며 이해하면 된다.만약 새로 작성하는 프로그램이라면 위와 같은 코드는 쓰지말도록 하자.

 

 

최종정리하면 짧은 문장을 쓸때는 문자열 보간으로 많은양의 문자열을 다룰때는 stringbuilder 를 사용한다.

위의 문자열 연산은 프로그램을 하며 수없이 사용할 내용이라 꼭 외워둬야 한다.

 

 

***숙제 : 관련되는 몇개의 문자들을 정의하고 + 로 더한 결과값과 문자열 보간을 사용해서 더한 결과값을 각각 팝업창에 출력하는 프로그램을 만들어보자. 소스 및 실행화면 공유할것.

ex) string car = "bus";

     string carnumber = "41";

     string mybus = car + carnumber;

     mybus 출력

'[ Program ] > c#스터디' 카테고리의 다른 글

12.윈폼/콘솔프로그램 실행법  (0) 2021.09.20
11.형변환  (0) 2021.09.20
9.변수,자료형 3(char , string)  (0) 2021.09.20
8.변수연산 숫자형  (0) 2021.09.20
7.변수,자료형 2(int와 float, double)  (0) 2021.09.20

댓글