본문 바로가기
  • fishing...
  • eating...
MISCELLANEOUSNESS

[스터디] C# 언어

by 회색뿔 2010. 2. 7.



지난해 가을에 동아리 스터디 문서 만든다고 WIKI로 만들었었는데..
이 서버가 불안해서 미리미리 백업을 떠넣는 취지에서 스샷만 빼고 복사해서 옮겨 놓는다.

동아리 교육에서 또 쓸지는 모르겟지만, 내가 만들었으니 날아가지 않게 잘 보존하는 것도 내 몫이다.



스샷 이미지도 옴겨 왓다. - 2010년 2월 7일




[편집] C# 언어?

  1. 프로그램 language
  2. .Net을 기반으로 함
  3. XML 지원
    1. XML을 지원하는 모든 프로그램과 소통 가능
  4. 객체 지향 언어
    1. C#, ASP.NET, Visual Basic.NET,Visual C++.NET 등의 다양한 언어를 지원
  5. .Net Platform은 FrameWork을 기반으로 하고 있다.


[편집] 프로젝트의 생성


ctrl + n or 파일(F)->새로만들기(N)->프로젝트


Visual C#-> 콘솔 응용 프로그램 선택

※ 설정에 따라 화면이 위와 다를 수 있음


다음과 같이 소스를 입력

using System;
using System.Collections.Generic;
using System.Text;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("Hello World!");
        }
    }
}

F5를 누르면 화면이 빠르게 사라지나, Ctrl + F5를 누르면 실행 결과를 확일 할 수 있다.

[편집] 데이터 타입과 표현식

C#의 모든 데이터 타입들은 System.Object에서 파생된 System.Type로 부터 상속된다. 즉 모든 데이터 타입들의 부모는 System.Object이며 System.Object 는 어떠한 데이터 타입으로도 Cating이 가능하다.

System.Object ------ System.Type

변수의 선언은

 int i = 32;
 System.int i =32;

둘다 같다.


[편집] 정수형 데이터 타입

Type TypeName Scope
sbyte System.SByte -128 에서 127 까지
byte System.Byte 0 에서 255 까지
char System.Char 하나의 유니코드 문자. U+0000 에서 U+FFFF 까지
short System.Int16 -32,768 에서 32,767 까지
ushort System.UInt16 0 에서 65,535 까지
int System.Int32 -2,147,483,648 에서 2,147,483,647 까지
uint System.UInt32 0 에서 4,294,967,295 까지

unsigned int

long System.Int64 -9,223,372,036,854,775,808 에서 9,223,372,036,854,775,807 까지
ulong System.UInt64 0 에서 18,446,744,073,709,551,615 까지

unsigned long



[편집] 실수형 데이터 타입

Type TypeName Accuracy Scope
float System.Single 7개의 자릿수 ±1.5 ×10~45 에서 ±3.4 × 1038 까지
Double System.Double 15~16개의 자릿수 ±5.0 ×10~324 에서 ±1.7 × 10308 까지
Decimal System.Decimal 28~29개의 자릿수 1.0 ×10~28 에서 7.9× 1028 까지



[편집] 문자, 논리형 데이터 타입

Type TypeName Scope
Object System.Object 모든 타입의 최상위 부모 클래스이다.

C#에서 모든 객체들은이 Object 클래스로부터 상속받는다.

String System.String 문자열을 나타내는 타입이다.
Bool System.Boolean Boolean 값이며 참(true) 또는 거짓(false)를 나타낸다.



[편집] Exmaple

using System;
using System.Collections.Generic;
using System.Text;

namespace ConsoleApplication1
{
    class Program
    {
        public static void Main(string[] args)
        {
            string name;
            int age;

            bool isMan = true;

            name = "kiness";
            age = 25;


            Console.WriteLine("이름은{0}이고 나이는 {1}입니다.", name, age );

            if( isMan == true )
            {
                Console.WriteLine("나는 남자입니다.");
            }
            else
            {
                Console.WriteLine("나는 여자입니다." );
            }
        }
    }
}



[편집] 표현식


[편집] 산술 연산자( + - * / )

연산자 결 과
+ a = b + c b와 c값의 합이 a에 배정된다.
- a = b -c b에서 c값을 뺀 값이 a에 배정된다.
* a = b * c b와 c값의 곱이 a에 배정된다.
/ a = b /c b를 c로나눈값이 a에 배정된다.
 % a = b% c b를 c로나눈값의 나머지가 a에 배정된다.
+ a =+ b a와 b의 합이 a에 배정된다.
- a =- b a에서 b값을 뺀 값이 a에 배정된다.



[편집] 증가, 감소 연산자( ++ -- )

연산자 결 과
++ a = ++b b 값에 1을 더한후 a에 배정한다.
-- a = --b b 값에서 1을 뺀후 a에 배정한다.
++ a = b++ b 값이 a에 배정된후 b값에 1을 더한다.
-- a = b-- b 값이 a에 배정된후 b값에 1을 뺀다.


[편집] 배정 연산자( += -= *= %= /= )

연산자 결 과
= a = b; b의 값을 a에 배정한다.
+= a += b; a와 b의 합이 a에 배정된다.
-= a -= b; a에서 b를 뺀 값이 a에 배정된다.
*= a *= b; a와 b의 곱이 a에 배정된다.
/= a /= b; a를 b로 나눈 결과가 a에 배정된다.
 %= a %= b; a를 b로 나눈 나머지가 a에 배정된다.


[편집] 관계 연산자( > < >= <= == != & | ! ^ )

연산자 결 과
== a == b a가 b와 같으면 true 같지 않으면 false를 반환
 != a != b a가 b와 같으면 false 같지 않으면 true 반환
< a < b a가 b보다 작으면 true 크면 false 반환
> a > b a가 b보다 작으면 false 크면 true 반환
<= a <= b a가 b보다 작거나 같으면 true 크면 false 반환
>= a >= b a가 b보다 크거나 같으면 true 작으면 true 반환


연산자 결 과
 ! a = !b b의 값이 true이면 a값에 false를 반환하고 b값이 false이면 a값에 true를 반환한다.
& a = b & c b와 c가 모두 true일때 a에 true를 반환하고 그렇지 않을때는 false를 반환한다.
a = b │ c b와 c 둘중 하나 또는 둘다 true일때 a에 true를 반환하고 아니면 false를 반환한다.
^ a = b ^ c b와 c 둘중 하나만 true일때 a에 true가 반환되고 아니면 false를 반환한다.


연산자 결 과
&& a = b && c b와 c가 모두 true일때 a에 true를 반환하고 그렇지 않을때는 false를 반환한다.
││ a = b ││ c b와 c 둘중 하나 또는 둘다 true일때 a에 true를 반환하고 아니면 false를 반환한다.



[편집] 사용자 정의 데이터 타입


[편집] 열거형(enum) 데이터 타입

열거형 데이터 타입은 특정한 값들의 모임을 저장할때 편리하다.

enum TYPE
{
    TYPE1, TYPE2, TYPE3
}

EXAMPLE

using System;
using System.Collections.Generic;
using System.Text;

namespace ConsoleApplication1
{
    enum TYPE
    {
        TYPE1, TYPE2, TYPE3
    }

    class Program
    {
        public static void Main(string[] args)
        {
            TYPE TypeTest0, TypeTest1;

            TypeTest0 = TYPE.TYPE1;
            TypeTest1 = (TYPE)1;

            Console.WriteLine( "{0}\n{1}", TypeTest0, TypeTest1 );
        }
    }
}

파일:Program3_0.JPG

TYPE 이란 열거형 타입 안에 TYPE1,TYPE2,TYPE3란 값을 배정해주고 Main 에서 TypeTest0라는 TYPE형 변수를 선언해 준다. 그다음 TypeTest0에 TYPE 열거형 변수 안에 TYPE1 이란 값을 넣어주고 출력한다. 또 두번째는 TypeTest1에 TYPE 열거형 변수안에 값중에 두번째 값을 넣어준 후 출력한다.


※ 인덱스의 시작은 0이라는 것을 잊지 말자.

[편집] 구조체(structure) 데이터 타입

Structure 타입 안에는 여러가지 타입의 변수를 넣을 수 있다. int,string 등등.. 여러가지 종류의 데이터 타입을 선언할수 있다.

기본적인 선언 방법은 다음과 같다.

public struct BOOK {

   public int BookNumber;
   public string BookName;

}

BOOK 은 Struct 의 이름이고 {}안에 선언된 것은 int형인 BookNumber 과 string 형인 BookName 이다. BOOK 안에 요소를 불러올때는 (.) 멤저 참조 연산자를 써주면 된다.

EXAMPLE BOOK.BookNumber; BOOK.BookName;

using System;
using System.Collections.Generic;
using System.Text;

namespace ConsoleApplication1
{
    enum TYPE
    {
        TYPE1, TYPE2, TYPE3
    }

    class Program
    {
        public static void Main(string[] args)
        {
            TYPE TypeTest0, TypeTest1;

            TypeTest0 = TYPE.TYPE1;
            TypeTest1 = (TYPE)1;

            Console.WriteLine( "{0}\n{1}", TypeTest0, TypeTest1 );
        }
    }
}


파일:Program3_1.JPG


[편집] 데이터 타입의 변환

데이터 타입을 변환하는 방법

int a = 10; short b;

b = a; b = (short)a;

※ 범위가 큰 데이터 타입을 범위가 작은 타입으로 변환시 데이터 손실이 발생한다.

[편집] 암시적 변환

b = a;

[편집] 명시적 변환

b = (short)a;


[편집] 조건문과 반복문

조건문과 반복문을 이요하여 프로그램의 흐름을 제어한다.

조건: 참과 거짓을 판별할 수 있는 기준

참: true, 0이 아닌 모든 값을 참으로 판별한다.

거짓: flase, 0을 거짓으로 판별한다.

[편집] if 조건문

[편집] 수행문장이 한 줄일 경우

if(조건)
	수행문장1;
else
	수행문장2;

조건이 true(참)일 경우 if문 다음의 문장(수행문장1)을 실행하고 조건이 false(거짓)일 경우 else 다음의 문장(수행문장2)을 실행한다.

[편집] 수행문장이 두 줄 이상일 경우

수행문장이 범위를 {}로 지정

if(조건)
{
    수행문장
}
else
{
    수행문장
} 

조건이 true(참)일 경우 if문 다음에 {}안에 문장을 실행하고 조건이 false(거짓)일 경우 else 다음에 {}안에 문장을 실행한다.

[편집] 수행문장이 2줄 이상인 경우

조건이 2개 이상일 경우

if(조건)
{
    수행문장
}
else if(조건)
{
    수행문장
}
else
{
    수행문장
}

첫번째 조건을 검사하고 true(참)일 경우 if문 다음에 {}안의 문장을 실행하고 false(거짓)일 경우 다음 if문으로 가서 조건을 검사해서 true(참) 일 경우 else if 다음에 {}안의 문장을 실행하고 false(거짓)이면 else 다음에 {}안에 문장을 실행한다.

[편집] 다중 if문

if문 안에 하나 이상의 if문이 들어갈수 있다.

if(조건)
{
    if(조건)
    {
    수행문장
    }
    else
    {
    수행문장
    } 
}
else
{
    if(조건)
    {
        수행문장
    }
    else
    {
    수행문장
    }
} 

첫 번째 if문에서 조건을 검사해서 true(참) 이면 if문 다음에 {}안에 if문을 검사하고 false(거짓)이면 else문 다음에 {}안에 if문을 검사한다.

단순 if문

if(조건)
{
수행문장
} 

else를 쓰지않고 조건이 true(참)일때 문장이 수행 할 수 있다. 위와 같이 if문만 쓰면 된다.

간단한 예제를 하나 해 보자. 프로젝트 화면에서 콘솔 응용 프로그램을 선택하고 다음과 같이 소스코드를 추가한다.

[편집] &&(AND)와 ||(OR) 연산자

if( a == 10 )
{
	if( b = 10 )
	{		
	}
}

위 다중 if문을 다음과 같이 한줄로 나타낼 수 있다.

if( a == 10 && b = 10 )


if( a < 10 )
{
}
if( 10 < a )
{		
}

위 if문을 다음과 같이 한줄로 나타 낼 수 있다.

if( a < 10 || 10 < a )
{		
}



[편집] switch 조건문

switch문은 어떤 주어진 조건에 따라 문장을 실행할때 주로 많이 쓴다. switch문의 선언 방법은 다음과 같다.

switch(조건번수)
{
    case 조건1 :
        실행문장;
    break;

    case 조건2 :
        실행문장;
    bareak;

    default :
        실행문장;
    bareak;
} 


[편집] for 반복문

  1. for문은 실행 문장을 일정 횟수만큼 반복 시키는데 사용한다..
  2. 일반적으로 반복 횟수가 명시적일 경우 많이 사용한다.

for문의 선언 방법은 다음과 같다.

for(초기값;조건;증감)
{
    실행문장
}

EXAMPLE

for ( i = 0; i < 10; i++ )
{
    Console.WriteLine("{0}", i);
}

위 프로그램은 i가 0 ~ 9까지 10번 반복하면서 i의 값을 출력하는 소스이다.

프로젝트를 생성하여 아래 프로그램을 작성하여 보기 바란다.

using System;
using System.Collections.Generic;
using System.Text;

namespace ConsoleApplication1
{
    class Program
    {
        public static void Main(string[] args)
        {
            int i, n;

            Console.Write("Input a Interger: ");
            n  = Convert.ToInt32( Console.ReadLine() );

            switch( n )
            {

                case 0:
                    break;
                case 1:
                    break;
                default:
                    break;
            }

            for ( i = 0; i < n; i++ )
            {
                Console.WriteLine("{0}", i);
            }

            Console.WriteLine("Inputted Value: {0}\n", n);
        }
    }
}


[편집] while 반복문

  1. while문은 어떤 조건이 맞을때까지 반복적으로 {}에 실행문장을 수행할때 사용한다.
    1. while문을 잘못 사용하면 무한루프에 빠질 수 있다.
    2. 따라서 반드시 종료가 되는 조건을 제시하여야 한다.
  2. while은 실행 문장을 수행하는 횟수가 대개 명시적이지 않을 경우 사용한다.


while문의 선언방법은 다음과 같다.

while(조건)
{
    실행문장
} 


[편집] do ~ while 반복문

  1. while과 do ... while의 사용법은 거의 동일하다.
  2. while과는 다르게 실행문장을 먼저 실행한 후 종료 조건을 검사한다.

do ~ while문의 사용방법은 다음과 같다.

do
{
    실행문장
}while(조건);



[편집] break, continue




[편집] 배열과 문자열 조작


[편집] 배열

[편집] 1차원 배열

배열이란 동일한 데이터 타입을 가지고 있는 값들을 한데 묶어놓은 것이다.

100명의 이름 정보를 저장한다고 하면 어떻게 할 것인가? 지금까지 학습 한 대로 한다면 다음과 같이 해야 할 것이다.

string name0 = "";
...
string name99 = "";

배열을 이러한 문제를 해결해준다. 간단하게 말하면, 동일한 데이터 타입의 집합에 하나의 이름과 첨자(index)를 이용해서 접근할수 있다.

배열의 선언은 다음과 같다.

데이터 타입[] 변수이름;

첨자(index)는 하나의 정수가 들어가며 첫번째 색인의 정수값은 0이 된다. 배열은 선언할때 배열의 크기를 같이 선언할 수 없다.

따라서 new 메소드를 사용하여 초기화할때 배열의 크기와 값 같은 것들을 지정해 주어야 한다.

배열을 선언하는 예를 잠깐 보자.

int[] Arr = new int[4]{1,2,3,4};
  1. int[] Arr 부분은 배열을 선언해 주는 부분이고
  2. new int[4]{1,2,3,4} 부분은 배열을 초기화 시켜준다음
    1. 배열의 크기를 4으로 지정해주고
    2. 배열에 1,2,3,4라는 값들을 넣어주라는 뜻이다.


※ 배열의 크기만 따로 지정해 주고 값은 나중에 지정해 줄수도 있다.

int[] Arr = new int[4]

배열의 크기를 따로 잡아주지 않아도 삽입되는 아래와 같이 아이템의 갯수대로 자동으로 배열의 크기가 잡힌다.

int[] Arr = {1,2,3,4}; // 배열의 크기는 4

new에 대해서는 후에 다시 자세히 다루도록 한다.

1차원 배열을 읽어오는 방법은 다음과 같다.

Console.WriteLine("{0}",Arr[0]);

다음과 같이 입력하면 Arr의 첫번째 아이템이 읽혀져 온다.


배열은 첫번째 아이템의 색인이 0부터 시작하니까 0을 적어주면 Arr에 첫번째 아이템 1이 출력된다. 이와 같이 변수명[색인]을 적어주면 배열을 읽어올 수 있다.

[편집] 다차원 배열

2차원 배열, 3차원배열.. 생각해보면 아주 쉽게 구분할수 있다.


간단하게 생각하면 1차원 배열은 참조하는 색인 1개이고 2차원 배열은 참조하는 색인이 2개이고 3차원은 3개라고 쉽게 생각하면 된다.


2차원과 3차원 배열의 선언방법은 다음과 같다.

int[,] TowArray;              // 2차원 배열
int[,,] TreeArray;            // 3차원 배열

첫번째 것이 2차원 배열이고 두번째 것이 3차원 배열이다.


[편집] 배열의 사용

[편집] Clone 메소드

Clone 메소드란 배열의 단순 복사본을 만드는 역활을 합니다.

Clone 사용예

static void Main(string[] args)
{
	int[] a = new int[5]{3,5,7,4,1};
	int[] b = (int[])a.Clone();
	foreach(int bb in b)
	{
		Console.WriteLine("{0}",bb);
	}
}



[편집] CopyTo 메소드

CopyTo 메소드란 현제 1차원 배열의 모든 요소를 지정한 배열의 인덱스부터 현제 배열의 요소를 복사합니다.

CopyTo 사용예

static void Main(string[] args)
{
	int[] a = new int[5]{3,5,7,4,1};
	int[] b = new int[5]{9,3,6,5,2};
	int[] c = new int[10];
	a.CopyTo(c,0);
	b.CopyTo(c,5);
	foreach(int cc in c)
	{
		Console.WriteLine("{0}",cc);
	}
}

배열 a의 요소를 c배열의 0번째 인덱스부터 5개의 요소를 복사하고 배열 b의 요소를 c배열의 5번째 인덱스부터 5개의 요소를 복사한후에 c배열을 출력한다. 다음은 실행 결과이다.


[편집] GetLength 메소드

GetLength 메소드는 지정한 차원의 요소의 갯수를 돌려주는 역활을 합니다.

GetLength 사용예

static void Main(string[] args)
{
	int[,] a = new int[2,5]{{3,5,7,4,1},{4,5,7,8,9}};
	Console.WriteLine("{0}",a.GetLength(0));
	Console.WriteLine("{0}",a.GetLength(1));
}

a배열의 0(1차원) 차원의 요소의 갯수와 1(2차원) 차원의 요소의 갯수를 출력한다.



[편집] Length 메소드

Length 메소드는 모든 배열의 요소의 갯수를 돌려주는 역활을 합니다.

Length 사용예

static void Main(string[] args)
{
	int[,] a = new int[2,5]{{3,5,7,4,1},{2,5,6,9,0}};
	Console.WriteLine("{0}",a.Length);
}



[편집] Rank 메소드

현제 배열의 차원의 수를 돌려줍니다.

Rank 사용예

static void Main(string[] args)
{
	int[,] a = new int[2,5]{{3,5,7,4,1},{2,5,6,9,0}};
	Console.WriteLine("{0}"+"차원",a.Rank);
}



[편집] Clear 메소드

지정한 배열의 요소들을 0, 또는 false,null 로 초기화 합니다. Clear의 첫번째 속성에는 검색을 할 배열을 지정해 주면되고 두번째 속성은 검색을 할 시작위치 즉 인덱스를 적어주면 되고 세번째 속성에는 0번째 인덱스부터 몇개의 인덱스를 검사할지의 여부를 설정해 주면 된다.

Clear 사용예

static void Main(string[] args)
{
	int[] a = new int[5]{3,5,7,4,1};
	System.Array.Clear(a,0,a.Length);
	foreach(int aa in a)
	{
		Console.WriteLine("{0}",aa);
	}
}



[편집] IndexOf 메소드

지정된 배열에서 지정된 요소를 검색하고 인덱스 값을 돌려줍니다. Index의 첫번째 속성에는 검색을 할 배열을 지정해주고 두번째 속성에는 검색할 요소의 값을 입력해주고 세번째 속성에는 검색을 시작할 인덱스 위치를 설정해주면되고 마지막으로 네번째 속성에는 검색할 요소의 갯수를 지정해 주면 된다.

IndexOf 사용예

static void Main(string[] args)
{
	int[] a = new int[5]{3,5,7,4,1};
	Console.WriteLine("{0}",System.Array.IndexOf(a,7,0,a.Length));
}



[편집] LastIndexOf 메소드

지정된 배열에서 지정된 요소의 마지막 인덱스를 검색하고 인덱스 값을 돌려줍니다. LastIndex의 첫번째 속성에는 검색을 할 배열을 지정해주고 두번째 속성에는 검색할 요소의 값을 입력해주고 세번째 속성에는 검색을 시작할 인덱스 위치 설정해 주는데 여기서 유의할 점은 LastIndexOf는 끝에서 부터 검색을 시작하므로 세번째 속성에는 검색을 시작할 마지막 인덱스를 적어주면 되고 마지막으로 네번째 속성에는 검색할 요소의 갯수를 지정해 주면 된다.

IndexOf 사용예

static void Main(string[] args)
{
	int[] a = new int[5]{3,5,7,3,1};
	Console.WriteLine("{0}",System.Array.LastIndexOf(a,3,4,a.Length));
}



[편집] Reverse 메소드

지정된 배열에서 지정된 요소의 값의 순서를 역순으로 설정합니다. Clear의 첫번째 속성에는 정렬을 할 배열을 지정해 주면되고 두번째 속성은 정렬을 할 요소의 시작위치 즉 인덱스를 적어주면 되고 세번째 속성에는 0번째 인덱스부터 몇개의 인덱스를 정렬할지의 여부를 설정해 주면 된다.

Reverse 사용예

static void Main(string[] args)
{
	int[] a = new int[5]{3,5,7,3,1};
	System.Array.Reverse(a,0,a.Length);
	foreach(int aa in a)
	{
		Console.WriteLine("{0}",aa);
	}
}



[편집] Sort 메소드

지정된 배열의 요소를 정렬시켜 줍니다. Sort의 첫번째 속성에는 Sort 할 배열을 정해주고 세번째 속성에는 시작할 인덱스 네번째 속성은 검색할 요소의 수를 정해줍니다.

Sort 사용예

static void Main(string[] args)
{
	int[] a = new int[5]{3,5,7,3,1};
	System.Array.Sort(a,null,0,a.Length,null);
	foreach(int aa in a)
	{
		Console.WriteLine("{0}",aa);
	}
}


[편집] 문자열 조작

메소드 설명
Clone 현제 객체의 참조를 반환한다.
Compare 지정된 객체의 문자열을 해당 형식에 맞게 대소문자 구분없이 비교합니다.
CompareOrdinal 지정된 객체의 문자열의 언어에 상관없이 비교합니다.
CompareTo 지정정 객체의 인스턴스를 비교합니다.
Concat 지정된 객체의 문자열을 합쳐서 새로운 문자열을 반환합니다.
Copy 지정된 객체와 동일한 값을 같는 객체의 복사본을 만듭니다.
CopyTo 지정된 위치에 있는 지정한 수의 문자를 유니코드 문자 배열의 특정위치에 복사합니다.
Equals 두 객체가 같은 값을 가지고 있는지 비교합니다.
Format 지정된 객체의 값을 Object 인스턴스에 해당하는 텍스트로 바꿉니다.
GetHashCode 현재 인스턴스의 해시코드를 반환한다.
GetTypeCode 현제 인스턴스의 타입코드를 반환한다.
IndexOf 현제 인스턴스의 문자열에서 지정된 값을 검색하고 그 값의 첫번째 인덱스를 반환해 준다.
Insert 현제 인스턴스의 문자열에 지정된 문자열을 끼워넣는다.
Join 지정된 배열의 각요소 사이에 있는 지정된 구분기호를 연결하여 하나의 연결된 문자를 만듭니다.
LastIndexOf 현제 인스턴스의 문자열에서 지정된 값을 검색하고 그 값의 마지막 인덱스를 반환해 준다.
Length 주어진 문자열 길이를 반환해 줍니다.
PadLeft 주어진 문자열을 오른쪽으로 정렬시켜주고 빈곳은 주어진 문자로 채워줍니다.
PadRight 주어진 문자열을 왼쪽으로 정렬시켜주고 빈곳은 주어진 문자로 채워줍니다.
Remove 주어진 문자열에서 주어진 위치에서부터 주어진 갯수만큼 문자열을 제거합니다.
Replace 해당하는 문자를 다른 문자로 바꾸어줍니다.
Split 문자열을 주어진 구분자들로 나누어 문자열 배열에 반환합니다.
StartsWith 현제 인스턴스의 문자열이 주어진 문자열로 시작하는지의 여부를 반환합니다.
Substring 현제 인스턴스로 부터 지정된 위치에서부터 지정된 갯수만큼의 문자열을 반환합니다.
ToCharArray 현제 인스턴스의 문자열로부터 Char형의 배열을 반환합니다.
ToLower 현재 문자열의 복사본을 모두 소문자로 반환합니다.
ToUpper 현제 문자열의 복사본을 모두 대문자로 반환합니다.
Trim 현제 문자열의 앞뒤 공백을 제거합니다.
TrimEnd 현제 문자열 끝의 공백을 제거합니다.
TrimStart 현제 문자열 앞의 공백을 제거합니다.

[편집] CompareTo 메소드

실습예제

static void Main(string[] args)
{
	string a = "Test";
	string b = "TEsT2";

	Console.WriteLine("{0}",a.CompareTo(b));
}

a가 b보다 길이가 작으면 -1, 같으면 0, 크면 1을 반환하여 준다.



[편집] Concat 메소드

지정된 배열의 문자열을 합쳐서 새로운 문자열을 반환합니다.

실습예제

static void Main(string[] args)
{
	string[] a = new String[3]{"aa","bb","cc"};

	Console.WriteLine("{0}",String.Concat(a));
}



[편집] Copy 메소드

지정된 객체와 동일한 값을 같는 객체의 복사본을 만듭니다.

실습예제

static void Main(string[] args)
{
	string a = "테스트";
	string b = String.Copy(a);

	Console.WriteLine("{0}",b);
}



[편집] Equals 메소드

두 객체의 값이 같은지를 비교해서 부울 형식을 결과를 반환합니다.

실습예제

static void Main(string[] args)
{
	string a = "테스트";
	string b = "테스트";
	
	Console.WriteLine("{0}",String.Equals(a,b));
}



[편집] IndexOf 메소드와 LastIndexOf 메소드

IndexOf 메소드는 문자열에서 지정된 값을 검색하고 그 값의 첫번째 인덱스를 반환해주고 LastIndex 메소드는 마지막 인덱스를 돌려준다.

실습예제

static void Main(string[] args)
{
	string a = "Hello! Hu Mi";
	
	Console.WriteLine("{0}",a.IndexOf("H"));
	Console.WriteLine("{0}",a.LastIndexOf("H"));
}



[편집] Insert 메소드

현제의 문자열에 지정된 문자열을 끼워넣은 문자열을 반환한다.

실습예제

static void Main(string[] args)
{
	string a = "Hello! Hu Mi";
	string b = a.Insert(7,"Test ");
	
	Console.WriteLine("{0}",b);
}



[편집] Length 메소드

현제 문자열의 길이를 반환한다.

실습예제

static void Main(string[] args)
{
	string a = "테스트";
	Console.WriteLine("{0}",a.Length);
}

Length 메소드는 영문이나 한글 구분없이 모두 1글자로 취급합니다.



[편집] PadLeft 메소드와 PadRight 메소드

주어진 폭 안에서 문자열을 왼쪽이나 오른쪽으로 정렬시켜주고 빈 문자열은 주어진 문자열로 채워줍니다.

실습예제

static void Main(string[] args)
{
	string a = "테스트 입니당..ㅡ0ㅡ";
	Console.WriteLine("{0}",a.PadLeft(30,'.'));
	Console.WriteLine("{0}",a.PadRight(30,'!'));
}

PadLeft, PadRight 메소드의 첫번째 인자는 문자열을 정렬시킬 폭을 지정해주면 되고 두번째 인자는 빈 공백에 채울 문자를 적어주면 된다.



[편집] Remove 메소드

문자열에서 주어진 위치에서부터 주어진 갯수만큼 문자열을 제거한 값을 반환합니다.

실습예제

static void Main(string[] args)
{
	string a = "테스트 입니당..ㅡ0ㅡ";
	Console.WriteLine("{0}",a.Remove(8,4));
}

Remove 메소드의 첫번째 인자는 문자열을 삭제할 문자열의 위치이며 두번째 인자는 몇개의 문자를 삭제할지 삭제할 문자열의 갯수를 적어주면 된다.



[편집] Replace 메소드

해당하는 문자를 다른 문자로 바꾼 값을 반환합니다.

실습예제

static void Main(string[] args)
{
	string a = "테스트 입니당..ㅡ0ㅡ";
	Console.WriteLine("{0}",a.Replace("ㅡ0ㅡ","ㅜ0ㅜ"));
}

첫번째 인자는 바꿀 문자열이고 두번째 인자는 바꾸고 싶은 문자열을 적어주면 됩니다..ㅡ0ㅡ;



[편집] Split 메소드

문자열을 정해진 구분자로 나누어 문자열 배열에 반환합니다.

실습예제

static void Main(string[] args)
{
	string a = "테스트/입니당/../ㅡ0ㅡ";
	string[] b = a.Split('/');

	foreach(string bb in b)
	{
		Console.WriteLine("{0}",bb);
	}
}



[편집] SubString 메소드

문자열에서 지정된 위치부터 지정된 갯수만큼의 문자열을 반환합니다.

실습예제

static void Main(string[] args)
{
	string a = "테스트 입니당..ㅡ0ㅡ";
	
	Console.WriteLine("{0}",a.Substring(9,3));
}

첫번째 인자는 문자열의 위치이고 두번째 인자는 문자열의 갯수이다.



[편집] ToCharArray 메소드

문자열을 Char형의 배열 형식으로 반환합니다.

실습예제

static void Main(string[] args)
{
	string a = "테스트 입니당..ㅡ0ㅡ";
	char[] b = a.ToCharArray();
	
	foreach(char bb in b)
	{
		Console.WriteLine("{0}",bb);
	}
}



[편집] ToLower 메소드와 ToUpper 메소드

문자열을 모두 대문자 또는 소문자로 바꾼 값을 반환하여 줍니다.

실습예제

static void Main(string[] args)
{
	string a = "Test C# Code";

	Console.WriteLine("{0}",a.ToLower());
	Console.WriteLine("{0}",a.ToUpper());
}



[편집] Trim 메소드와 TrimEnd메소드, TrimStart 메소드

문자열의 앞의 공백 또는 문자열의 뒤의 공백 또는 문자열의 앞뒤 공백을 없애준 값을 반환합니다.

실습예제

static void Main(string[] args)
{
	string a = "    Test C# Code    ";

	Console.WriteLine("{0}"+".",a.Trim());
	Console.WriteLine("{0}"+".",a.TrimEnd());
	Console.WriteLine("{0}"+".",a.TrimStart());
}


[편집] foreach 반복문

foreach문은 배열의 각 요소를 하나씩 탐색하는 데 유용하게 이용될 수 있다.

다음과 같이 사용하며,

foreach(변수타입 함수별명 in 함수) 
{
    실행문장
}

함수안에 아이템들을 하나하나씩 꺼내와서 함수별명에 넣어주고 실행문장을 수행한다.

using System;
using System.Collections.Generic;
using System.Text;

namespace ConsoleApplication1
{
    class Program
    {
        public static void Main(string[] args)
        {
            int[] Arr = new int[6] { 11, 21, 31, 41, 51, 61 };

            foreach( int i in Arr )
            {
                Console.WriteLine("{0}", i);
            }
        }
    }
}

위 코드를 실행 해 보면 이해가 쉽게 될 것이다.

[편집] 클래스와 상속

[편집] 델리게이트와 이벤트

[편집] 예외 사항 처리

try
{
    검사할 함수 부분
}
catch
{
    에러가 발생했을때 실행되는 부분
}



try
{
    검사할 함수 부분
}
catch
{
    에러가 발생했을때 실행되는 부분
}
finally
{
    에러에 상관없이 항상 실행되는 부분
}


[편집] Console application에서 window form 추가



form 정보

controll


참조 추가

소스 코드 수정

결과