C# 프로그래밍 기초 실습 전자책
C# 초보 캠프

Day 4

문자열

문자열(string)은 이중인용부호롤 둘려 싸이고 문자(char)는 단일인용부호로 둘려 싸이는데, 문자열은 문자(char)들의 집합으로 볼 수 있다. 문자열에서 문자 하나를 발췌하기 위해서는 "문자열변수[인덱스]" 와 같이 [ ] 부호를 사용하여 해당 위치(인덱스)를 지정하면 된다. 예를 들어, 문자열 s = "Hello" 에서 2번째 문자는 s[1] 을 사용하면 된다. 여기서 인덱스는 0 부터 시작하기 때문에, 첫번째 문자는 s[0], 두번째 문자는 s[1] 과 같이 된다.

문자열(string)은 다양한 방식으로 변환될 수 있는데, 예를 들어 두 문자열을 결합할 때는 s1 + s2 같이 + 로 결합할 수 있고, 문자열중 부분문자열을 발췌하려면 s.SubString(시작인덱스, 부분문자열길이) 처럼 일부만 발췌할 수 있다. 또한, 문자열을 특정 문자(예를 들어 공백이나 콤마)로 분리하기 위해서는 s.Split() 메서드를 사용할 수 있다. 이때 분리되어 리턴되는 타입은 문자열 배열이 된다.

실습

문자열에서 한문자씩 가져오기, 문자열 결합하기, 부분문자열 발췌하기, 문자열을 공백하나로 분리하기 등을 테스트하는 코드를 작성해 본다.

    using System;

    namespace Day4
    {
        class Program
        {
            static void Main(string[] args)
            {
                // 문자열에서 한 문자
                s = "Hello";
                char c = s[0];  // H
                c = s[1];       // e
                c = s[2];       // l
                Console.WriteLine(c);

                // 문자열 결합 (string concatenation)
                string s1 = "Hello";
                string s2 = "World";

                string s = s1 + " " + s2;
                Console.WriteLine(s);  // "Hello World"

                // 부분 문자열 (substring)
                string sub = s.Substring(1, 4);
                Console.WriteLine(sub);  // "ello"

                // 문자열에서 공백으로 분리
                s = "I am a boy";
                string[] words = s.Split(' ');

                for (int i = 0; i < words.Length; i++)
                {
                    Console.WriteLine(words[i]);
                }
            }
        }
    }
  • 문자열 s 에 대해 s[i] 를 사용하면 char 타입의 하나의 문자를 리턴한다. 하나의 문자는 char 타입의 변수에 넣는다
  • 문자열 결합은 + 를 사용한다
  • 부분문자열울 구하기 위한 s.SubString(1,4)은 처음 시작인덱스가 1이고 부분문자열 길이가 4이므로 두번째 문자부터 4개의 문자를 취한다

네임스페이스, 클래스, 메서드

C# 프로젝트를 처음 생성하면 디폴트로 생성되는 C# 프로그램 코드가 있는데 이데 대해 간략히 살펴보자. 우선 가장 먼저 using문 다음에 있는 네임스페이스는 하나 이상의 클래스 (혹은 다른 종류의 Type)을 포함할 수 있다. 클래스는 실제 네임스페이스 없이도 선언될 수 있지만, 일반적으로 네임스페이스 안에서 선언되며, 클래스의 Full Name은 "네임스페이스.클래스명" 이 된다. 예를 들어, 아래 Program 클래스의 풀네임은 Day4.Program 이 되며, MyMath의 풀네임도 역시 Day4.MyMath가 된다. 네임스페이스는 클래스를 계층적인 구조 밑에 둘 수 있게 하여, 수많은 클래스들을 계층적으로 분류하는데 유용하다. 네임스페이스 이름은 계층적으로 작명할 수 있는데, 예를 들어 MyCompany.MyTeam.MyProdcut 와 같이 점(.) 으로 연결해 이름 지울 수 있다.

C#에서 가장 보편적인 타입은 클래스(class)로서 클래스는 일반적으로 네임스페이스 안에 혹은 또 다른 클래스 안에 위치할 수 있다. 하나의 네임스페이스 안에는 하나 이상의 클래스가 놓일 수 있다. 클래스를 사용하기 위해서는 "네임스페이스.클래스명"과 같이 풀네임을 사용하면 되는데, 동일한 네임스페이스 에서는 보통 네임스페이스를 생략하고 클래스명만 사용한다. 다른 네임스페이스에서 클래스를 사용하기 위해서는 풀네임을 쓰거나 상단에 "using 네임스페이스명"을 지정한 후 네임스페이스를 생략할 수 있다. (주: 이때 C# 컴파일러가 자동으로 클래스의 네임스페이스명을 찾는다)

메서드는 클래스 안에서 정의된 함수를 의미하는데, 특정 동작을 수행하는 명령들의 집합이라 볼 수 있다. 즉, 합계를 구하는 Sum() 과 같은 함수가 클래스 안에 있을 때 메서드라 부른다. 모든 C# 프로그램은 Main() 메서드로부터 시작되는데, 이를 프로그램 시작점 즉 Entry Point라 부른다. 동일한 클래스 안에 있는 메서드는 네임스페이스나 클래스명을 생략하고 직접 메서드명 만으로 메서드를 호출할 수 있다. 하지만 다른 클래스에 있는 메서드인 경우에는 해당 클래스명과 함게 (혹은 그 클래스의 객체로부터) 호출해야 한다.

  • 라인 9에서는 Display() 메서드를 풀네임으로 호출하였다. 이는 동일 클래스에 있으므로 라인 10에서 처럼 간단하게 메서드명만 쓸 수 있다.
  • 라인 12에서는 MyMath 클래스의 Sum() 메서드를 풀네임으로 호출하였다. 이는 라인 13에서 처럼 동일 네임스페이스에 있기 때문에 네임스페이스를 생략할 수 있지만, 다른 클래스에 있으므로 클래스명을 명시하여야 한다.

Homework

문자열 "Hello World"를 거꾸로 출력하는 프로그램을 작성하시오. 즉, 출력 결과는 "dlroW olleH" 이 된다.



본 웹사이트는 광고를 포함하고 있습니다. 광고 클릭에서 발생하는 수익금은 모두 웹사이트 서버의 유지 및 관리, 그리고 기술 콘텐츠 향상을 위해 쓰여집니다.