내일배움캠프 7일차 TIL, C# 클래스 그리고 구조체

황오영·2024년 4월 23일
0

TIL

목록 보기
7/56
post-thumbnail

프로그래밍 학습주간

  • 어제에 이어 오늘도 프로그래밍 학습주간으로 기초구문은 그래도 기존에도 많이 학습해와 오늘 부터 배우는 부분들이 원래도 헷갈리고 많이 어려웠던 부분들이라 TIL을 잘 정리하고자 한다.

클래스와 구조체

클래스

  • 클래스 : 데이터와 메서드를 하나로 묶은 사용저 정의 타입
  • 객체를 생성하기 위한 템플릿 또는 설계도 역할
class Player
{
	public int Health;
    public int Mana;
}

구조체

  • 구조체 : 구초제는 여러개의 데이터를 묶어 하나의 사용자 정의 형식으로 만든것
  • struct 키워드를 사용하여 선언
  • 구조체의 멤버는 변수와 메서드로 구성, 멤버 접근시 .키워드 사용
public Struct Player
{
	public int Health;
    public int Mana;
}

그래서 둘의 차이가 정확히 뭐야?

  • 모두 사용자 정의 형식을 만드는데 사용되지만

    상속여부, 형식의차이(메모리 저장방식)

  • 구조체는 값 형식이고 스택에 할당되고 복사될 때 값이 복사되고
  • 클래스는 참조형식이라 힙에 할당된다.
  • 구조체는 상속을 받을 수 없다. 클래스는 상속이가능
  • 구조체가 좀더 간단한 작업에 사용되는편 class의 경우 메모리를 할당에 지속적으로 가비지 컬렉터를 괴롭힐 필요가 없다.
  • 물론 에외가 있다고는 하지만 이정도만 알아둬도 당장은 괜찮을듯! 추가할 내용이 있으면 추후작성하자.

프로퍼티

  • 프로퍼티는 get과 set 접근자를 통해 값을 읽고 설정하는 동작을 정의한다. 데이터의 보안을 위해 사용!
  • 항상 public을 통해 사용을 했지만 앞으로 개발을 할때는 이 프로퍼티를 잘 쓰는 습관을 들이겠다고 최근에 많이 생각했던 부분이다.
class Person
{
    private string name;
    private int age;

    public string Name
    {
        get { return name; }
        set { name = value; }
    }

    public int Age
    {
        get { return age; }
        set { age = value; }
    }
}
  • 이런식으로 get은 반환 set은 설정의 키워드로 생각하면 좋다. set의 경우 접근제한자를 사용해 값설정을 제한할 수 도있다.

오늘의 회고

  • 생각보다 막상 정리하고 나니 구조체와 class의 차이를 조금은 알게 된 기분이다. 막상 두개의 차이가 메모리의 할당방식이라는 생각이 드니 결국 경험적으로 어떤 부분에선 어떤것을 사용하는지 좋은가에 대해 많이 생각해 봐야 할것같다.(최근 보았던 모 회서 기술면접에서 물어봤던 질문중 하나, 이번기회에 잘 정리해두자)
  • 내일은 상속과 추상인데 강의 듣는게 생각보다 엄청 재미있고 몰랐던 부분을 알아가는 즐거움이 있는 하루였다.
  • 코딩테스트같이 문제푸는것도 생각보다 재미있다. 같은 팀원분들 알려주면서 나도 새롭게 배우는 부분도있고 c++로만 하다 콘솔창 쓰니 어색한것도 있고?
  • 게임 빨리 만들고싶다는 생각이 요즘 좀 드는것같다 유니티 안쓴지 너무 오래된기분? 막상 2~3일밖에안되었지만
  • 팀원 분들과 좀 더 소통많이해서 많은걸 알려드려야겠다고 생각했다.
profile
게임개발을 꿈꾸는 개발자

0개의 댓글