C# 강좌 : 제 17강 - 구조체

C# Using Struct

C# 강좌 : 제 17강 - 구조체
[ C# ] - 윤대희

구조체(Struct)


구조체 (Struct)는 클래스 (Class)와 비슷한 부분이 많습니다. 클래스와 동일한 구조로 사용할 수 있습니다.

하지만 구조체는 클래스와 다른점이 있는데, 크기가 작으며 간단합니다. 또한 상속이 필요가 없는 경우에 사용합니다.


특징 클래스 구조체
선언 class struct
형식 참조 형식 값 형식
복사 얕은 복사 깊은 복사
인스턴스 생성 new연산자, 생성자 필요 매개 변수가 없는 생성자 선언 불가


참조 형식, 값 형식이란? : 9강 바로가기



복사 (Copy)


프로그래밍을 진행하다보면 같은 양식을 복사해서 사용해야할 경우가 종종 있습니다. 복사에는 2 종류가 있으며 각각 큰 차이를 보입니다.



  • 얕은 복사 (Shallow Copy) : 얕은 복사란 복사본의 값을 바꾸엇을 때 원본의 값도 바뀌는 형태입니다. 클래스에서 얕은 복사가 사용됩니다. 쉽게 설명하자면 word 파일을 작성하였을 때, 바로가기 아이콘과 동일합니다.


class test_class
{
    public int first;
    public int second;
}

private void Form1_Load(object sender, EventArgs e)
{
    test_class original = new test_class();

    original.first = 10;
    original.second = 20;

    test_class copy = original;
    copy.first = 30;

    Console.WriteLine("{0}, {1}, {2}, {3}", original.first, original.second, copy.first, copy.second);
}

실제 출력 값 : 30, 20, 30, 20



  • 깊은 복사 (Deep Copy) : 깊은 복사란 복사본의 값을 바꾸어도 원본의 값은 바뀌지 않는 형태입니다. 구조체에서 깊은 복사가 사용됩니다. 쉽게 설명하자면 word 파일을 작성하였을 때, 복사ㆍ붙여넣기와 동일합니다.


struct test_struct
{
    public int first;
    public int second;
}

private void Form1_Load(object sender, EventArgs e)
{
    test_struct original;

    original.first = 10;
    original.second = 20;

    test_struct copy = original;
    copy.first = 30;

    Console.WriteLine("{0}, {1}, {2}, {3}", original.first, original.second, copy.first, copy.second);
}

실제 출력 값 : 10, 20, 30, 20



Book Image

개정판이 출간됐습니다!

C#과 파이썬을 활용한 OpenCV 4 프로그래밍 (개정판)

컴퓨터 비전 기초 이론부터 머신러닝을 활용한 영상 처리 프로젝트까지

  • C#과 파이썬용 OpenCV의 데이터 형식과 행렬 및 배열 연산
  • 이미지/동영상/카메라를 활용한 입출력과 결과 저장
  • 전처리 과정과 정보를 탐색하기 위한 이미지 변형
  • 유의미한 정보를 검출하기 위한 이미지 변환
  • 이미지에서 정보를 검출 및 인식
  • 객체 검출을 포함한 모션 추적
  • K-means, KNN, SVM 등의 머신러닝 알고리즘 적용 방법
  • 카페(Caffe), 다크넷(Darknet), 텐서플로 모델을 활용한 딥러닝 모듈 적용 방법
  • Tesseract-OCR과 C# OpenCvSharp4를 활용한 프로젝트
  • 텐서플로와 Python OpenCV4를 활용한 프로젝트
  • 윤대희 저 | 위키북스

    [yes24 바로가기] [알라딘 바로가기] [교보문고 바로가기]

    후원하기


    ⤧  Previous post C# 강좌 : 제 16강 - 배열 ⤧  Next post C# 강좌 : 제 18강 - 컬렉션
    C# Category