클래스

최태선·2022년 3월 8일
0

이것이 C#이다

목록 보기
1/10

1. 생성은 생성자에, 종료는 가비지컬렉터에 맡겨라

2. static 선언을 하면 메소드나 필드가 인스턴스가 아닌 클래스 자체에 소속된다.

->인스턴스를 만들지 않고도 사용 가능하다. ex) MyClass.StaticMethod();

3. 클래스는 참조형식. 참조형식은 힙 영역에 객체를 할당하고 스택에 있는 참조가 객체를 가리키는 형식. -> Myclass target = source 이런식으로 복사하는 경우 얕은복사 (주소만복사)가 진행됨. 깊은복사는 메소드로 구현해야함.

4. this()생성자를 이용하면 매개변수가 1개일때, 2개일때, 3개일때...를 편리하게 구현할 수 있다.

Class Myclass
{
	int a, b, c;
    public MyClass()
    {
    	this.a = 1;
    }
    public MyClass(int b) : this()
    {
    	this.b = b;
    }
    public MyClass(int b, int c) : This(b)
    {
    	this.c = c;
    }
}

5. sealed 한정자를 이용하면 클래스나 메소드를 상속 불가능하게 만들 수 있다.

6. 형식 변환자 is 와 as

if(mammal is Dog) //dog이 아니라면 false
{
	dog = (Dog)mammal;
    dog.Bark;
}

Cat cat = mamal2 as Cat; // as로 형변환하여 참조
if(cat != null) // as 실패시 null
{
	cat.Meow();
}

7.virtual한정자를 이용하면 메소드의 override를 허용할 수 있다.

8. new : 메소드 숨기기

new를 사용하여 기반 클래스에서 구현된 버전의 메소드를 감추고 파생 클래스에서 구현된 메소드만 보이도록 할 수 있다.

calss Derived : Base
{
	public new void MyMethod()
    {
    	Console.WriteLine("Derived.MyMethod()");
    }
}

9. readonly를 이용하면 읽기만 가능한 필드를 만들 수 있다. 이때 쓰기는 생성자에서만 가능하다.

private readonly int min

10. 중첩클래스는 클래스 외부에 공개하고싶지 않은 형식을 만들때, 현재 클래스의 일부분처럼 표현할 수 있는 클래스를 만들고 싶을때 사용한다.

11. 확장메소드를 위해서는 static으로 클래스와 메소드를 선언하고, 첫번째 매개변수는 반드시 this 키워드와 함께 확장하고자 하는 형식의 키워드여야함.

namespace MyExtension
{
	public static class IntegerExtension
    {
    	public static int Power(this int myInt, int exponent)
        {
        	int result = myInt;
            for ( int i=1; i<exponent; i++ )
          	{
            	result = result * myInt;
            }
       	}
    }
}
int a =2;
Console.WriteLine(a.Power(2));
profile
최태선입니다

0개의 댓글