C# 기초다지기 - 문자열




안녕하세요 열코입니다.

이번 시간에는 C# 프로그래밍의 문자열에 대해 알아보도록 하겠습니다.

C#에서는 다른 언어에서와 마찬가지로 문자열을 문자배열(char[])로 사용할 수 있습니다.

하지만 C#에서 기본 제공하는 string 키워드를 사용하여 문자열 변수를 선언할 수도 있습니다.

string 키워드는 System.String 클래스에 포함되어있습니다.


1. String 객체 만들기

- C#에서 String 클래스의 객체를 만드는 방법은 여러가지가 존재합니다.

1) 문자열 리터럴(상수)를 String 변수에 할당

2) String 클래스 생성자 사용

3) 문자열 연결 연산자(+) 사용

4) 문자열 반환 메소드 호출

- 다음 예제 소스코드를 통해 위 방법에 대해 설명합니다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
using System;
 
namespace MyStringApplication {
    class MyString {
        static void Main(string[] args) {
            string str1 = "HELLO";
            Console.WriteLine("str1 = {0}", str1);
            
            string str2 = new string("HELLO2");
            Console.WriteLine("str2 = {0}", str2);
            
            char[] letters = {'H''E''L''L''O''3');
            string str2_2 = new string(letters);
            Console.WriteLine("str2_2 = {0}", str2_2);
 
            string str3 = str1 + str2;
            Console.WriteLine("str3 = {0}", str3);
            
            string arr = {"HELLO""SEMOG""!!");
            string str4 = String.Join(" ", arr);
            Console.WriteLine("str4 = {0}", str4);
        }
    }
}
cs


- 출력 결과

str1 = HELLO

str2 = HELLO2

str2_2 = HELLO3

str3 = HELLOHELLO2

str4 = HELLO SEMOG !!


2. String 클래스 속성

- String 클래스에는 다음 두가지의 속성이 존재합니다.

1) Chars : 현재 String 객체의 지정된 위치에 있는 Char 객체를 반환합니다.

2) Length : 현재 String 객체의 문자 수(길이)를 반환합니다.


3. String 클래스 메소드

- String 클래스에는 문자열 객체를 작업하는데 도움이 되는 다양한 메소드(함수)들이 존재합니다.

- 다음 메소드들은 가장 일반적으로 사용되는 메소드들의 리스트입니다.

1) Compare()

1
public static int Compare(string srt1, string str2);
cs

- 두 String 객체를 비교하여 정렬 순서에 따라 상대위치를 나타내는 정수를 반환합니다.

- 정렬 순서는 ABC 순이며, 가장 앞 문자부터 비교합니다.

- str1이 str2 보다 정렬순서가 앞인 경우 : 음수(-1) 반환

- str1과 str2가 정렬순서가 동일한 경우 : 0 반환

- str1이 str2 보다 정렬순서가 뒤인 경우 : 양수(+1) 반환


2) Concat()

1
public static string Concat(string str1, string str2);
cs

- 두 문자열 객체를 연결하여 반환합니다.


3) Contains()

1
public bool Contatins(string str);
cs

- 문자열 내에서 지정된 String 객체가 존재하는지 여부를 나타내는 값을 반환합니다.


4) Copy()

1
public static string Copy(string str);
cs

- 지정된 문자열의 복사값으로 새 String 객체를 반환합니다.


5) Equals()

1
public static bool Equals(string str1, string str2);
cs

- 지정된 두 String 객체가 동일한지 여부를 반환합니다.


6) IndexOf()

1
public int IndexOf(char ch);
cs

- 현재 문자열에서 지정된 문자(유니코드)중 처음으로 나타나는 위치의 인덱스를 반환합니다.

- 매개변수가 문자열(string) 객체인 함수도 오버로딩되어있습니다.


7) Replace()

1
public string Replace(string str1, string str2);
cs

- 현재 문자열 객체에 있는 지정된 문자열을 모두 지우고 새로운 문자열로 변경한 문자열 객체를 반환합니다.


8) Split()

1
public string[] Split(params char[] seperator);
cs

- 현재 문자 배열 요소로 구분된 문자열 객체의 하위 문자열을 포함하는 문자열 배열을 반환합니다.

- 매개변수 기준으로 문자열을 쪼갠다고 생각하시면 됩니다.


9) Trim()

1
public string Trim();
cs

- 현재 String 객체에서 앞, 뒤 공백문자를 모두 제거합니다.

- 문자열 사이의 공백은 제거되지 않습니다.



이상 'C# 문자열'에 대해 알아보았습니다.

질문 사항은 모두 커뮤니티에서 받습니다. -> 커뮤니티 바로가기

메인 페이지로 이동하시면 더 많은 자료를 볼 수 있습니다.


'C#' 카테고리의 다른 글

C# 기초다지기 - 상속  (0) 2018.11.09
C# 기초다지기 - 클래스  (0) 2018.11.08
C# 기초다지기 - 구조체  (0) 2018.11.08
C# 기초다지기 - 배열  (1) 2018.11.06
C# 기초다지기 - 상수  (0) 2018.11.06
C# 기초다지기 - 캡슐화  (0) 2018.11.05
C# 기초다지기 - 프로그램 구조  (0) 2018.11.05
C# 기초다지기 - 변수  (0) 2018.11.05

C# 기초다지기 - 배열




안녕하세요 열코입니다.

이번 시간에는 C# 프로그램에서 배열 사용법에 대해 알아보도록 하겠습니다.


1. 배열이란

- 배열은 동일한 데이터 유형(Type)의 순차적인 모음을 의미합니다.

- num1, num2, ... num99 와 같이 개별적으로 변수를 선언하는 대신, 배열을 사용하여 숫지 [0], [1], ... [99]를 이용하여 배열의 인덱스에 접근합니다.

- 모든 배열은 인접한 메모리 위치로 구성됩니다. 가장 낮은 주소가 첫번째 요소이며, 배열의 이름은 첫번째 요소의 주소를 의미합니다.


2. 배열선언

- C#에서 배열을 선언하려면 다음 구문을 사용합니다.

1
int[] arr;
cs


- int 부분에 데이터 유형을 입력합니다. double 형 배열을 사용하려면 double[] 이름; 을 사용하세요.

- arr은 배열의 이름을 지정합니다.


3. 배열초기화

- C#에서 배열을 위와같이 선언하더라도 초기화되지 않습니다.

- C#에서 배열은 참조 유형이므로 new 키워드를 사용하여 배열의 객체를 만들어야 합니다.

- 다음과 같이 사용할 수 있습니다.

1
2
3
4
int[] arr = new int[10];
 
double[] arr2;
arr2 = new double[30];
cs


4. 배열에 값 할당

- 배열의 인덱스 번호를 사용하여 개별요소에 값을 할당합니다.

1
2
3
4
5
int[] arr = new int[3];
 
arr[0= 1;
arr[1= 2;
arr[2= 3;
cs


- 다음과 같이 선언과 동시에 값을 할당할 수 있습니다.

1
int[] arr = { 12345 };
cs


- 배열을 만들고 초기화 할 수 있습니다.

1
int[] arr = new int[4] { 051015 };
cs


- 배열의 크기를 생략할 수 있습니다.

1
int[] arr = new int[] { 0510152025 };
cs


- 배열 변수를 다른 배열 변수에 복사할 수 있습니다.

1
2
int[] arr = new int[] { 1234 };
int[] test = arr;
cs


- C# 프로그램에서 배열을 만들 때 배열 요소들을 기본 값으로 초기화시킵니다.

(예를들어 int 형 배열의 경우 모두 0으로 초기화됩니다.)



5. 배열 요소에 접근

- 배열 이름을 인덱싱하여 요소에 접근합니다.

- 배열의 이름 다음에 대괄호를 사용하여 요소의 인덱스를 배치합니다.

- 다음과 같이 사용할 수 있습니다.

1
2
3
4
int[] arr = new int[3] { 123 };
int a = arr[0]; // 1이 삽입됨
int b = arr[1]; // 2가 삽입됨
int c = arr[2]; // 3이 ㅏ
cs


6. 반복문으로 배열 접근

- 예를들어 배열 100개를 선언하고 배열의 값이 1부터 100까지 초기화하고 출력하는 문제를 단순 for문을 사용하여 해결하면 다음과 같이 프로그램을 작성할 수 있습니다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
using System;
 
namespace MyArrayApplication {
    class MyArray {
        static void Main(string[] args) {
            int[] arr = new int[100];
 
            for(int i = 0; i < 100; i++) {
                arr[i] = i + 1;
            }
 
            for(int i = 0; i < 100; i++) {
                Console.WriteLine("arr[{0}] = {1}", i, arr[i]);
            }
        }
    }
}
cs


- 또한 foreach 문을 사용하면 더 간단히 배열에 접근할 수 있습니다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
using System;
 
namespace MyArrayApplication {
    class MyArray {
        static void Main(string[] args) {
            int[] arr = new int[100];
 
            for(int i in arr) {
                arr[i] = i + 1;
            }
 
            for(int i in arr) {
                Console.WriteLine("arr[{0}] = {1}", i, arr[i]);
            }
        }
    }
}
cs



이상 'C# 배열'에 대해 알아보았습니다.

질문 사항은 모두 커뮤니티에서 받습니다. -> 커뮤니티 바로가기

메인 페이지로 이동하시면 더 많은 자료를 볼 수 있습니다.


[관련 게시글]



'C#' 카테고리의 다른 글

C# 기초다지기 - 상속  (0) 2018.11.09
C# 기초다지기 - 클래스  (0) 2018.11.08
C# 기초다지기 - 구조체  (0) 2018.11.08
C# 기초다지기 - 문자열  (2) 2018.11.07
C# 기초다지기 - 상수  (0) 2018.11.06
C# 기초다지기 - 캡슐화  (0) 2018.11.05
C# 기초다지기 - 프로그램 구조  (0) 2018.11.05
C# 기초다지기 - 변수  (0) 2018.11.05

C# 기초다지기 - 상수




안녕하세요 열코입니다.

이번시간에는 C# 프로그램에서 상수에 대한 사용법에 대해 알아보도록 하겠습니다.


1. 상수란?

- 상수란 프로그램이 실행 중 변경되지 않는 고정된 값을 말합니다. 

(이러한 고정 값을 컴퓨터 프로그래밍에서 리터럴 이라고 합니다.)

- 상수는 정수, 부동소수점, 문자, 문자열 상수가 존재하며 열거(enum) 상수도 있습니다.

- 상수는 일반 변수와 달리 정의한 이후에 값을 수정할 수 없습니다.

- 예를들어 파이(π)와 같은 값은 3.14...인 값이며 변하지 않는 값입니다. 이를 표현할 때 우리는 상수로 표현합니다.


2. 정수 리터럴

- 정수 리터럴은 10진수 또는 16진수 상수가 될 수 있습니다.

- 16진수의 접두어는 0x 또는 0X이며 10진수의 접두어는 없습니다.

- unsigned(부호가 없는) 정수 리터럴에 u 또는 U 접미어를 조합할 수 있습니다.

- long 타입의 정수 리터럴에 l 또는 L 접미어를 조합할 수 있습니다.


1
2
3
4
5
6
10 // 10진수
0x4b // 16진수
30 // int
30u // unsigned int
15l // long
15ul // unsigned long
cs


3. 부동 소수점 리터럴

- 부동 소수점 리터럴은 정수부분, 소수점, 소수부분 및 지수부분을 포함합니다.

- 부동 소수점 리터럴은 10진수 형식 또는 지수형식으로 나타낼 수 있습니다.


1
2
3.14159
314159E-5F
cs


4. 문자 리터럴

- 문자 리터럴은 작은 따옴표 ' ' 로 묶습니다.

- C#에는 \(백 슬래시)가 붙는 특정 문자(escape sequence)가 존재합니다.


Escape Sequence 

Value 

\\ 

\

\' 

' 

\" 

" 

\? 

? 

\a 

alert 

\b 

backspace 

\f 

form feed 

\n 

new line 

\r

carriage return 

\t 

horizontal tab 

\v 

vertical tab 


- 다음은 몇가지 escape sequence를 사용한 예제입니다.


1
2
3
4
5
6
7
8
9
using System;
 
namespace EscapeSequence {
    class Program {
        static void Main(string[] args) {
            Console.WriteLine("Hello\n\tWorld");
        }
    }
}
cs


- 결과


Hello

World


5. 문자열 리터럴

- 문자열 리터럴은 큰 따옴표 " " 또는 @ " " 로 묶습니다.

- 문자열에는 문자 리터럴과 escape sequence가 포함됩니다.

- 다음은 문자열 리터럴의 몇가지 예입니다.


1
2
3
4
5
"Hello"
"Hi, SEMOG"
"a \
b"
@"abc"
cs


6. 상수 정의하기

- 사용자가 일반 변수를 const 키워드를 사용하여 상수로 정의할 수 있습니다.

- 상수를 선언하는 동시에 값을 초기화 해야합니다.


1
const double PI = 3.14159;
cs



이상 'C# 상수'에 대해 알아보았습니다.

질문 사항은 모두 커뮤니티에서 받습니다. -> 커뮤니티 바로가기

메인 페이지로 이동하시면 더 많은 자료를 볼 수 있습니다.


'C#' 카테고리의 다른 글

C# 기초다지기 - 클래스  (0) 2018.11.08
C# 기초다지기 - 구조체  (0) 2018.11.08
C# 기초다지기 - 문자열  (2) 2018.11.07
C# 기초다지기 - 배열  (1) 2018.11.06
C# 기초다지기 - 캡슐화  (0) 2018.11.05
C# 기초다지기 - 프로그램 구조  (0) 2018.11.05
C# 기초다지기 - 변수  (0) 2018.11.05
C# DB연동  (1) 2018.08.29

C# 기초다지기 - 캡슐화




안녕하세요 열코입니다.

이번시간에는 캡슐화에 대해 알아볼건데요.

캡슐화는 객체 지향프로그래밍의 중요한 기능중 하나입니다.

캡슐화란 물리적, 논리적 패키지내에 하나이상의 항목을 포함하는 프로세스라고 정의됩니다.

C# 프로그램에서 캡슐화는 액세스 지정자에 의해 구현됩니다.

액세스 지정자는 클래스 멤버의 범위 및 가시성을 제한하며 다음과 같은 액세스 지정자를 지원합니다.


public, private, protected, internal, protected internal


1. public 액세스 지정자

public 액세스 지정자는 클래스 멤버 변수 및 함수를 다른 함수 및 객체에 표시할 수 있도록 합니다.

모든 public 멤버는 class 외부에서 액세스 할 수 있습니다.

다음 예제 코드를 참고하세요.


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
using System;
 
namespace TestApplication {
    class Semo {
        public int width;
        public int height;
 
        public double GetArea() {
            return (double)width * (double)height / 2.0;
        }
    }
    class Test {
        static void Main(string[] args) {
            Semo s = new Semo();
            s.width = 2;
            s.width = 4;
            Console.WriteLine("Area : {0}", s.GetArea());
        }
    }
}
cs


Semo 클래스의 멤버 변수 width, height와 멤버 함수 GetArea()는 모두 public 지정자로 되어있으므로,

15,16,17번 줄에서 Semo 클래스 객체 s를 통해 멤버 변수와 함수에 직접 접근이 가능한 모습입니다.


2. private 액세스 지정자

private 접근 지정자는 클래스 멤버 변수 및 멤버 함수를 다른 함수 및 객체에서 숨기도록 지정합니다.

동일한 클래스내부에서만 접근 가능하며, 클래스의 객체 또한 private 멤버에 접근할 수 없습니다.

따라서 클래스 외부에서 private 지정자에게 접근하기 위해서는 클래스 내부의 public 함수를 통해 접근할 수 있도록 합니다. 

대표적으로 getter와 setter를 예로들수 있는데요. 다음 예제 코드를 확인해주세요.


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
using System;
 
namespace TestApplication {
    class Semo {
        private int width;
        private int height;
 
        public void SetWidth(int width_) {
            width = width_;
        }
 
        public void SetHeight(int height_) {
            height = height_;
        }
 
        public int GetWidth() {
            return width;
        }
 
        public int GetHeight() {
            return height;
        }
    }
    class Test {
        static void Main(string[] args) {
            Semo s = new Semo();
            s.SetHeight(2):
            s.SetWidth(4);
            Console.WriteLine("Area : {0}", (double)s.GetWidth() * (double)s.GetHeight() / 2.0);
        }
    }
}
cs


8, 12번째 줄을 보시면 Set~() 함수를 통해 인수로 받은 값을 클래스 내 private 멤버 값을 초기화해주는 public 함수가 존재합니다. 이를 보통 setter라고 부릅니다.

16, 20번째 줄을 보시면 Get~() 함수를 통해 클래스 내 private 멤버 값을 반환하는 public 함수가 존재하며 이를 getter라 부릅니다.


3. protected 액세스 지정자

protected 접근 지정자는 하위(상속) 클래스가 상위(기본) 클래스의 멤버 변수 및 함수에 접근할 수 있도록합니다.

이는 C# 상속 장에서 자세히 다루도록 하겠습니다.


4. internal 액세스 지정자

C++ 클래스에서는 존재하지 않던 액세스 지정자입니다.

이 internal 접근 지정자는 클래스 멤버 변수 및 함수를 동일한 어셈블리의 파일 내에서만 접근할 수 있도록 합니다.


5. protected internal 액세스 지정자

이 접근 지정자 역시 상속 구현시 사용되는 접근 지정자며 동일한 어셈블리 파일 내 하위 클래스에서만 접근 가능하도록 합니다.


이상 'C# 캡슐화'에 대해 알아보았습니다.

질문 사항은 모두 커뮤니티에서 받습니다. -> 커뮤니티 바로가기

메인 페이지로 이동하시면 더 많은 자료를 볼 수 있습니다.



'C#' 카테고리의 다른 글

C# 기초다지기 - 구조체  (0) 2018.11.08
C# 기초다지기 - 문자열  (2) 2018.11.07
C# 기초다지기 - 배열  (1) 2018.11.06
C# 기초다지기 - 상수  (0) 2018.11.06
C# 기초다지기 - 프로그램 구조  (0) 2018.11.05
C# 기초다지기 - 변수  (0) 2018.11.05
C# DB연동  (1) 2018.08.29
[C#] 유니코드 한글로 변환하기  (0) 2018.08.22



안녕하세요 열코입니다.

이번시간에는 C# 프로그램의 구조에 대해 살펴보도록 하겠습니다.

C# 프로그램은 다음 부분으로 구성됩니다.


네임 스페이스 선언

클래스

클래스 메소드

클래스 속성

메인 메소드

명령문과 표현

코멘트


C# 프로그램은 하나 이상의 파일로 구성됩니다. 각 파일은 네임스페이스를 포함할 수 있습니다.

네임스페이스란 클래스, 구조체, 인터페이스 등의 모음을 뜻하며 

이런 요소들을 모두 포함하는 C# 프로그램의 기본 구조입니다.


C# 프로그램 프로젝트를 만들고 컴파일하는 과정을 간단히 설명합니다.

- Visual Studio 를 실행합니다.

- 프로젝트를 생성합니다.

- Visual C#을 선택하고 콘솔 응용프로그램을 선택합니다.

- 프로젝트의 이름을 정하면 새 프로젝트가 만들어집니다.


다음 간단한 Hello World 출력 코드를 살펴보도록 하겠습니다.


1
2
3
4
5
6
7
8
9
10
using System;
 
namespace HelloWorldApplication {
    class HelloWorld {
        static void Main(string[] args) {
            Console.WriteLine("Hello World");
            Console.ReadKey();
        }
    }
}
cs


이 코드를 컴파일한 후 실행하면 다음과 같은 결과가 실행됩니다.


Hello World


1줄 : using System;

- using 이라는 키워드는 네임스페이스를 포함시키는데 사용됩니다.

- System 이라는 네임스페이스를 프로그램에 포함시킵니다.

3줄 : namespace HelloWorldApplication { }

- 네임스페이스(클래스의 모음)를 선언합니다.

4줄 : class HelloWorld {}

- 클래스(메소드의 모음)를 선언합니다.

5줄 : static void Main(string[] args) {}

- Main 함수는 C#프로그램의 진입점입니다.

6줄 : Console.WriteLine("Hello World");

- 콘솔 클래스(System 네임스페이스)를 이용하여 화면에 "Hello World"를 출력합니다.

7줄 : Console.ReadKey();

- 프로그램이 키 입력을 기다립니다. (프로그램 자동 종료 방지)


이상 'C# 프로그램 구조'에 대해 알아보았습니다.

질문 사항은 모두 커뮤니티에서 받습니다. -> 커뮤니티 바로가기

메인 페이지로 이동하시면 더 많은 자료를 볼 수 있습니다.


'C#' 카테고리의 다른 글

C# 기초다지기 - 문자열  (2) 2018.11.07
C# 기초다지기 - 배열  (1) 2018.11.06
C# 기초다지기 - 상수  (0) 2018.11.06
C# 기초다지기 - 캡슐화  (0) 2018.11.05
C# 기초다지기 - 변수  (0) 2018.11.05
C# DB연동  (1) 2018.08.29
[C#] 유니코드 한글로 변환하기  (0) 2018.08.22
[C#] Visual Studio 2017 C# OpenCV 라이브러리 설치  (0) 2018.08.18

to Top