[c \ # 20 문] 1. 클 라 스 와 struct 를 언제 사용 합 니까?

5628 단어 struct
POINTS
struct 는 데이터 와 함 수 를 포함 할 수 있 는 값 형식 입 니 다.
struct 는 값 형식 이 므 로 쌓 지 않 고 스 택 (stack) 에 공간 을 할당 합 니 다.
struct 는 데 이 터 를 struct 에 직접 존재 하고 class 는 인용 형식의 지침 만 저장 합 니 다.
struct 는 작은 데이터 구조 에 적용 된다.
struct 는 성능 에 영향 을 줄 수 있 습 니 다.
struct 는 new 작업 을 사용 하여 구조 기 를 호출 할 수 있 지만 힙 에 메모 리 를 할당 하지 않 습 니 다.
struct 의 구조 기 는 struct 의 값 자체 만 되 돌려 줍 니 다 (보통 stack 에 분 배 됩 니 다)
class 를 사용 할 때 여러 변 수 는 같은 대상 을 참조 할 수 있 습 니 다.
sturct 를 사용 하여 모든 변 수 는 자신의 데이터 복사 본 을 저장 하고 서로 영향 을 주지 않 습 니 다.
struct 는 계승 을 지원 하지 않 습 니 다. sturct 는 object 형식 에서 계승 합 니 다.
DEMO
    class Program

    {

        class PointClass

        {

            public int x;

            public int y;

            public PointClass(int x, int y)

            {

                this.x = x;

                this.y = y;

            }

        }

        struct PointStruct

        {

            public int x;

            public int y;

            public PointStruct(int x, int y)

            {

                this.x = x;

                this.y = y;

            }

        }

        static void Main(string[] args)

        {

            PointStruct pointStruct = new PointStruct(10, 10);

            Console.WriteLine("Initial struct values are {0},{1}", pointStruct.x, pointStruct.y);

            ModifyStructPoint(pointStruct);

            Console.WriteLine("After ModifyStructPoint, struct values are {0},{1}", pointStruct.x, pointStruct.y);



            Console.WriteLine();

            PointClass pointClass = new PointClass(10, 10);

            Console.WriteLine("Initial Class values are {0},{1}", pointClass.x, pointClass.y);

            ModifyClassPoint(pointClass);

            Console.WriteLine("After ModifyClassPoint, class values are {0},{1}", pointClass.x, pointClass.y);

            Console.ReadLine();

        }



        private static void ModifyStructPoint(PointStruct pointStruct)

        {

            pointStruct.x = 20;

            pointStruct.y = 20;

            Console.WriteLine("Modified Valuesare {0},{1}", pointStruct.x, pointStruct.y);



        }



        private static void ModifyClassPoint(PointClass pointClass)

        {

            pointClass.x = 20;

            pointClass.y = 20;

            Console.WriteLine("Modified Valuesare {0},{1}", pointClass.x, pointClass.y);

        }

    }

좋은 웹페이지 즐겨찾기