C# 5

C# 2019. 12. 9. 19:03

* 중첩 클래스


class A{

...

...

class B{

...

}

}


// 이 형태에서 class b는 class a의 private에 접근이 가능함.

// 보통 내부 메소드에서 private 필드에 접근하는 것과 같음



* 분할 클래스


particial class a{

...

}


particial class b{

...

}


// 두 개의 클래스를 하나의 클래스처럼 사용해도 됨

// 대신 함수가 중복되면 안됨



* 확장 메소드


// 기존에 있는 메소드를 재정의해서 기능을 변경하는 것인데 새로운 함수를 만드는 것이 낫다.



* 구조체


    struct Point3D

    {

        public int X;

        public int Y;

        public int Z;


        public Point3D(int X, int Y, int Z)

        {

            this.X = X;

            this.Y = Y;

            this.Z = Z;

        }


        public override string ToString()  // 이건 .tostring()의 재정의 한 것

        {

            return string.Format("{0}, {1}, {2}", X, Y, Z);

        }

    }

    class MainApp

    {

        static void Main(string[] args)

        {

            Point3D p3d1;  // new 없이 선언 가능

            p3d1.X = 10;

            p3d1.Y = 20;

            p3d1.Z = 40;


            Console.WriteLine(p3d1.ToString());


            Point3D p3d2 = new Point3D(100, 200, 300);  // new로 생성시는 생성자 사용한거다 -_-

            Point3D p3d3 = p3d2;  // 깊은 복사

            p3d3.Z = 400;


            Console.WriteLine(p3d2.ToString());

            Console.WriteLine(p3d3.ToString());

        }

    }


// 구조체와 클래스의 비교


- 선언 : 구조체는 new 필수x (new가 있는 경우는 생성자 사용할 때), 클래스는 필수o

- 형식 : 구조체는 값 형식, 클래스는 참조 형식

- 복사 : 구조체는 깊은 복사, 클래스는 얕은 복사

- 생성자 : 구조체는 매개변수 없이 생성자 (x), 클래스는 매개변수없이 생성자 (o)


// 결론적으로 구조체는 스택에 저장됨. 그래서 깊은 복사가 가능함.

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

C# 7  (0) 2019.12.09
C# 6  (0) 2019.12.09
C# 4  (0) 2019.12.09
C# 3  (0) 2019.12.09
C# 2  (0) 2019.12.02
블로그 이미지

ryancha9

https://blog.naver.com/7246lsy

,