• 티스토리 홈
  • 프로필사진
    유니얼
  • 방명록
  • 공지사항
  • 태그
  • 블로그 관리
  • 글 작성
유니얼
  • 프로필사진
    유니얼
    • 분류 전체보기 (295)
      • Unity (17)
        • 게임 개발 (5)
      • Unreal (24)
        • 게임 개발 (20)
      • DirectX (36)
      • 코딩테스트 (91)
        • 프로그래머스 (25)
        • 백준 (66)
      • Google Workspace (1)
      • Programing (102)
        • C# (68)
        • C++ (24)
        • JavaScript (10)
      • 게임 서버 프로그래밍 (17)
      • Web (6)
        • 슈퍼코딩 (6)
  • 방문자 수
    • 전체:
    • 오늘:
    • 어제:
  • 최근 댓글
    등록된 댓글이 없습니다.
  • 최근 공지
    등록된 공지가 없습니다.
# Home
# 공지사항
#
# 태그
# 검색결과
# 방명록
  • C# 프로그래밍의 기초: 구조체(Struct) 이해하기
    2024년 08월 24일
    • 유니얼
    • 작성자
    • 2024.08.24.:40
    728x90

    C# 프로그래밍 언어에서 구조체(struct)는 특정 유형의 데이터를 하나의 논리적 단위로 그룹화하는 데 사용되는 값 타입(Value Type)입니다. 이 블로그 글에서는 구조체의 기본 개념, 특징, 그리고 C#에서의 활용 방법에 대해 자세히 살펴보겠습니다. 구조체는 클래스와 유사하지만, 몇 가지 중요한 차이점이 있습니다. 이를 이해하는 것은 효율적인 C# 프로그래밍에 매우 중요합니다.

    구조체의 기본 개념

    구조체는 C#에서 System.ValueType을 상속받으며, 주로 작은 데이터 그룹을 표현하는 데 사용됩니다. 구조체의 인스턴스는 스택 메모리에 저장되어, 힙 메모리를 사용하는 클래스에 비해 일반적으로 성능상의 이점을 제공합니다.

    구조체의 주요 특징

    1. 값 타입: 구조체는 인스턴스가 직접 데이터를 저장하므로, 변수 간에 구조체를 복사할 때 데이터 자체가 복사됩니다. 이는 참조 타입과는 대조적으로, 참조 타입의 경우 변수 간에 데이터의 참조만이 복사됩니다.
    2. 불변성(Immutability): 구조체는 불변하게 설계하는 것이 좋습니다. 이는 구조체가 작은 데이터 묶음으로 사용되며 값이 자주 변하지 않을 때 최적화된 성능을 제공하기 때문입니다.
    3. 상속 불가: 구조체는 다른 클래스나 구조체를 상속받을 수 없습니다. 이는 구조체가 독립적인 단위로 설계되어야 함을 의미합니다. 하지만 인터페이스는 구현할 수 있습니다.
    4. 매개변수 없는 생성자 없음: C#에서 구조체는 매개변수가 없는 생성자를 가질 수 없으며, 모든 필드를 초기화해야 합니다. 이는 구조체의 데이터 무결성을 보장하는 데 도움이 됩니다.

    구조체 사용 예

    구조체는 좌표, 색상, 복소수 등 작은 데이터 집합을 표현할 때 주로 사용됩니다. 예를 들어, 2D 좌표를 나타내는 구조체를 다음과 같이 정의할 수 있습니다.

    예제 코드:

    public struct Point
    {
        public int X { get; }
        public int Y { get; }
    
        public Point(int x, int y)
        {
            X = x;
            Y = y;
        }
    
        public double DistanceTo(Point other)
        {
            int dx = X - other.X;
            int dy = Y - other.Y;
            return Math.Sqrt(dx * dx + dy * dy);
        }
    }
    

    이 구조체는 X와 Y 좌표를 포함하고 있으며, 다른 점과의 거리를 계산하는 메서드를 제공합니다.

    전체 예제 코드:

    
    using System;
    
    namespace CSharp_ProgramingStudy.Chapter5_OOP
    {
        public class Class2
        {
            // 2D 좌표를 나타내는 구조체 정의
            public struct Point
            {
                public int X { get; } // X 좌표
                public int Y { get; } // Y 좌표
    
                // 생성자를 통해 좌표 초기화
                public Point(int x, int y)
                {
                    X = x;
                    Y = y;
                }
    
                // 두 점 간의 거리를 계산하는 메서드
                public double DistanceTo(Point other)
                {
                    int dx = X - other.X;
                    int dy = Y - other.Y;
                    return Math.Sqrt(dx * dx + dy * dy);
                }
            }
    
            public void Run()
            {
                // Point 구조체의 인스턴스 생성
                Point p1 = new Point(0, 0); // 원점 (0, 0)
                Point p2 = new Point(3, 4); // (3, 4) 위치
    
                // 두 점 사이의 거리 계산
                double distance = p1.DistanceTo(p2);
                Console.WriteLine($"Distance between p1 and p2: {distance}"); // 출력: 5
            }
        }
    }

    결론

    구조체는 값 타입 데이터를 효율적으로 관리하고, 메모리 사용을 최적화하는 데 유용합니다. 작은 크기의 데이터를 빠르게 처리해야 할 때 구조체를 활용하면 클래스를 사용하는 것보다 성능상의 이점을 누릴 수 있습니다. 그러나 크기가 큰 데이터나 자주 변경되는 데이터를 다룰 때는 클래스를 사용하는 것이 더 적합할 수 있습니다. C#에서 구조체와 클래스를 적절히 선택하여 사용하는 것은 효과적인 프로그래밍을 위해 중요합니다.

     

    반응형
    다음글
    다음 글이 없습니다.
    이전글
    이전 글이 없습니다.
    댓글
조회된 결과가 없습니다.
스킨 업데이트 안내
현재 이용하고 계신 스킨의 버전보다 더 높은 최신 버전이 감지 되었습니다. 최신버전 스킨 파일을 다운로드 받을 수 있는 페이지로 이동하시겠습니까?
("아니오" 를 선택할 시 30일 동안 최신 버전이 감지되어도 모달 창이 표시되지 않습니다.)
목차
표시할 목차가 없습니다.
    • 안녕하세요
    • 감사해요
    • 잘있어요

    티스토리툴바