본문 바로가기
개발/기타

[C#] 클래스 기본

by 유다110 2016. 6. 5.
반응형


* C# 자주 쓰이는 클래스

0. List

int[] intArray = new int[10]; 은 고정된 길이의 배열을 만든다.

하지만 List 클래스를 사용하면 배열 크기를 가변적으로 할 수 있다.


List 클래스는 배열과 마찬가지로 특정 자료형의 리스트로 선언한다.

이를 위해 Generic을 사용하는데, Generic은 클래스 뒤에 <자료형>을 붙여 적용한다.

ex. List<int> list = new List<int>();


* 클래스 생성과 인스턴스 변수

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
Class Program{
    class FirstClass{
        public string name;
        public int age;
        public DateTime today;
    }
    
    class SecondClass{
    }
    
    static void Main(string[] args){
        FirstClass first = new FirstClass(); 
        //Math와 같은 기본 클래스를 사용할 때는 따로 인스턴스를 만들지 않는다.
        
    }
}
cs

0. List에서 값을 제거할 때 for loop를 쓸 경우, 반드시 역 for loop로 삭제해야 한다.



* Overloading

0. 메소드 이름은 같으나 매개변수를 달리하는 메소드를 만드는 것


* 접근제한자(Access modifier)

0. 접근제한자를 입력하지 않으면 자동으로 private 접근제한자가 설정된다.

1. private은 자신의 클래스 내부에서만 메소드를 사용할 수 있다.


* 생성자(Constructor)

0. 생성자는 일반적으로 인스턴스 변수를 초기화하는 일을 한다.

1. 인스턴스 생성자

1
2
3
4
5
6
7
8
9
10
11
12
13
public [클래스 이름]([매개변수])
{    
}
    0. 이름은 클래스 이름과 같아야 한다.
    1. 접근 제한자는 public 이어야 한다.
    2. 반환과 관련된 선언을 하지 않는다.
 
class Product
{
    public Product(...)
    {
    }
}
cs


* 소멸자(Destructor)

0. 파일을 닫거나 웹 통신을 끊을 필요가 있을 때 사용

1. 클래스 이름 앞에 ~ 기호를 붙여 사용하고 접근제한자나 반환/매개변수 관련 선언을 하지 않는다.

2. 하나의 클래스에는 하나의 소멸자만 있다.

1
2
3
4
5
6
7
8
9
10
class Product
{
    public Product(...)
    {
    }
    
    ~Product()
    {    
    }
}
cs


* 캡슐화

0. Getter, Setter

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
public int GetWidth(){return width;}
public int SetWidth(int width)
{
    if(width > 0){this.width = width;}
    else{Console.WriteLine("높이는 자연수로 입력");}
}
//심플하게
class Box{
    private int width;
    public int Width{ //속성 이름은 대문자로 시작한다.
        get{return width;}
        set{
            if(width > 0){this.width = width;}
            else{Console.WriteLine("높이는 자연수로 입력");}
        }
    }
}
cs


* Value와 Reference

0. C#의 모든 자료형은 Value와 Reference로 나뉘어진다.

1. int나 float 등 기본 자료형은 Value이고, 클래스로 만들어진 인스턴스는 Reference이다.



반응형

'개발 > 기타' 카테고리의 다른 글

[Github] SSH key 등록 및 커밋  (0) 2016.11.07
[C#] 델리게이터(delegate)와 람다(lambda)  (1) 2016.06.09
[C#] 인터페이스(interface)  (0) 2016.06.07
[C#] 제네릭(Generic)과 구조체(Struct)  (0) 2016.06.05
[C#] 상속과 다형성  (0) 2016.06.05

댓글