C# 기초다지기 - 구조체




안녕하세요 열코입니다.

이번시간에는 C# 구조체(Struct)에 대해 알아보도록 하겠습니다.


- 구조체란?

구조체는 사용자 정의 데이터 유형(Data Type)으로 int, double 등과 같은 기본적으로 제공되는 변수 유형이 아닌

새로운 유형, 여러가지 유형을 사용하기위해 사용자가 직접 만들어 사용됩니다.

C#에서 구조체는 일반 변수와 같이 값 형식의 데이터 형식입니다. (클래스는 참조형식)



- 구조체 정의하기

구조체를 정의하려면 struct 문을 사용합니다.

struct문은 프로그램에서 두개 이상의 멤버(변수)가 있는 새로운 데이터 형식을 정의합니다.

예를들어, 학생이라는 변수를 만들려고할 때 필요한 멤버들은 이름, 학번, 나이 등이 있습니다.

이를 Student 구조체로 만드는 방법은 다음과 같습니다.

1
2
3
4
5
struct Student {
    public string name;
    public int std_num;
    public int age;
};
cs


struct 키워드를 통해 Student라는 이름의 구조체를 정의하고 { } 대괄호 안에 멤버 변수들을 정의합니다.

정의된 구조체를 프로그램에서 사용하는 예제입니다.

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
using System;
 
struct Student {
    public string name;
    public int std_num;
    public int age;
};
 
public class MyStructTest {
    public static void Main(string[] args) {
        Student std; // 구조체 변수 선언
        Student std2;
 
        std.name = "세모지";
        std.std_num = 20181108;
        std.age = 26;
 
        std2.name = "열코";
        std2.std_num = 20181109;
        std2.age = 27;
 
        Console.WriteLine("Student 1 name : {0}", std.name);
        Console.WriteLine("Student 1 std_num : {0}", std.std_num);
        Console.WriteLine("Student 1 age : {0}", std.age);
 
        Console.WriteLine("Student 2 name : {0}", std2.name);
        Console.WriteLine("Student 2 std_num : {0}", std2.std_num);
        Console.WriteLine("Student 2 age : {0}", std2.age);
 
    }
}
cs


위와 같이 일반 변수처럼 구조체 변수를 선언한 후 구조체 변수의 멤버 변수에 .(점)을 통해 접근합니다.



- C# 구조체 특징

위에서 Student 라는 간단한 구조체를 사용했습니다.

C#에서의 구조체는 전통적인 C/C++의 구조체와 상당히 다른점이 존재합니다.

C# 구조체에는 다음과 같은 특징들이 존재합니다.

- C# 구조체에 메소드, 필드, 속성등을 가질 수 있습니다.

- C# 구조체에 생성자를 정의할 수 있습니다.

- C# 프로그램에서 new 연산자를 이용하여 struct 객체를 생성할 수 있습니다.


- C# 구조체에 기본(Default) 생성자를 정의할 수 없습니다.

- C# 구조체에 소멸자를 정의할 수 없습니다.

- C# 구조체는 다른 구조체나 클래스의 기본 구조체(상속하기 위한)가 될 수 없습니다.



- C# 구조체 vs 클래스

C#에서 구조체와 클래스는 다음과 같은 차이점이 존재합니다.

- 클래스는 참조유형이며 구조체는 값 유형입니다.

- 구조체는 상속을 지원하지 않습니다.

- 구조체는 기본(디폴트) 생성자를 가질 수 없습니다.



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

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

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


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

C# 기초다지기 - 상속  (0) 2018.11.09
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# 기초다지기 - 변수  (0) 2018.11.05

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

to Top