C Sharp(C#) 의 뼈대



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
33
34
35
36
37
// A skeleton of a C# program 
using System;
namespace YourNamespace
{
    class YourClass
    {
    }
 
    struct YourStruct
    {
    }
 
    interface IYourInterface 
    {
    }
 
    delegate int YourDelegate();
 
    enum YourEnum 
    {
    }
 
    namespace YourNestedNamespace
    {
        struct YourStruct 
        {
        }
    }
 
    class YourMainClass
    {
        static void Main(string[] args) 
        {
            //Your program starts here...
        }
    }
}

cs



using

키워드.

세 가지 쓰임이 있다.

1. [지시문] 바로 아래에 설명할 특정 네임스페이스 안에 들어있는 클래스를 풀네임으로 쓰는 불편함을 줄여주어 클래스명만 쓸 수 있게 해줌. 바로 위 코딩은 현재 1번설명에 해당하는 쓰임 

2. [지시문] 형식에 대한 별칭을 만들 수 있음

1
using Project = PC.MyCompany.Project; 

cs

3. [구문] IDisposable 개체를 올바르게 사용할 수 있게 해 주는 편리한 구문을 제공

= IDisposable클래스 객체정의 없이도 Dispose() 메소드를 제공

1
2
3
4
using (Font font1 = new Font("Arial"10.0f)) 
{
    byte charset = font1.GdiCharSet;
}

cs

네임스페이스(namespace)

키워드.

1. 클래스를 조직화 해 준다.

: .NET Framework에서는 네임스페이스를 사용하여 많은 클래스를 조직화 한다.

2. 큰 프로그래밍 프로젝트에서 클래스 및 메서드 이름의 범위를 쉽게 제어할 수 있다.

클래스(class)

다른 형식의 변수, 메서드 및 이벤트를 그룹화하여 사용자 지정 형식을 만들 수 있는 구문

static으로 선언된 클래스가 아니라면 클래스개체나 클래스인스턴스화 변수를 생성해야 하며, 이 변수는 해당 변수에 대한 모든 참조가 범위를 벗어날 때까지 메모리에 유지된다.

구조체(struct)

클래스의 경량화 버전이라고 생각하면 쉬울듯

구조체는 값 형식 ( 클래스는 참조 형식 ) = 구조체의 새 변수를 할당하고 수정해도 원본 데이터는 변경되지 않음.

상속 불가

인스턴스화 하지 않아도 구조체 사용 가능

파라미터가 없는 기본생성자나 소멸자 선언을 할 수 없다. 그치만 파라미터있는 생성자는 선언 가능함

단, 이러한 생성자가 있는 구조체의 파라미터를 다른 클래스에서 사용하고 싶다면, 인스턴스화 해서 사용해야 한다.

인터페이스(interface)

클래스 또는 구조체에서 구현할 수 있는 관련 기능 그룹에 대한 정의가 포함되어 있다.

한 클래스의 상속은 단 한개의 클래스만 가능한 것에 비해 인터페이스는 여러 개 구현이 가능한 점을 잘 활용하면 될듯.

추상 클래스(상속)와 비슷하지만, 인터페이스(구현)는 서명만 정의한다. 즉 속성(변수)이 있으면 안 되고, 멤버(메소드)의 정의만 있어야 한다.

인터페이스를 구현하는 모든 클래스 또는 구조체는 모든 멤버를 구현해야 한다.

직접 인스턴스화 불가하며, 인터페이스를 구현하는 클래스가 대신 인스턴스화 해줘야한다.

대리자(delegate)

메소드를 안전하게(보안유지, 객체지향적) 캡슐화 할 수 있게 하는 역할을 함.

이것보고 자바스크립트처럼 메소드 안에 메소드를 파라미터로 써먹을 수 있겠다는 생각을 했다.

1
2
3
4
5
6
7
8
9
10
11
12
public delegate void Del(string message);        
// Create a method for a delegate.        
public static void DelegateMethod(string message)        {
    System.Console.WriteLine(message);        
}        
static void Main(string[] args)
{
    // Instantiate the delegate.
    Del handler = DelegateMethod;
    // Call the delegate.
    handler("Hello World");                    
}
cs

열거형형식(enum)

변수에 할당할 수 있는 명명된 정수 상수 집합을 정의

기본적으로 열거형 안에 들어갈 요소의 내부형식은 int로써, 0부터 1씩 증가하여 배당된다. 물론, 강제로 숫자를 배정할 수도 있다.

1
2
3
4
5
6
7
8
9
10
11
12
13
enum Days { Sunday, Monday, Tuesday, Wednesday, Thursday, Friday, Saturday };
 
Days today = Days.Monday;
int dayNumber =(int)today;
Console.WriteLine("{0} is day number #{1}.", today, dayNumber);
    // 결과 : Monday is day number #1. 
 
enum Months : byte { Jan, Feb, Mar, Apr, May, Jun, Jul, Aug, Sep, Oct, Nov, Dec };
 
Months thisMonth = Months.Dec;
byte monthNumber = (byte)thisMonth;
Console.WriteLine("{0} is month number #{1}.", thisMonth, monthNumber);
    // 결과 : Dec is month number #11.
cs



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

C#: 속성 (property)  (0) 2017.06.04
C# 개념 : 실행순서 , CLR과 클래스 라이브러리  (0) 2017.06.04

+ Recent posts