C# 12

C# 얕은 복사(Shallow Copy) 깊은 복사(Deep Copy)

오늘은 면접 대비 질문을 준비하면서 잘 모르는 내용이 나와서,  얕은 복사(Shallow Copy)와 깊은 복사(Deep Copy)에 대해 정리해 보고자 합니다. 얕은 복사 객체의 참조 값만 복사하는 방식 참조(메모리 주소)만 복사하기에실제 데이터는 힙 영역의 동일한 메모리를 가리키게 되고,한쪽에서 내부 값을 변경하면 다른 쪽도 영향을 받는다. 예시 더보기// 얕은 복사 예시 public class Player {     public string Name;     public List Items; } Player player1 = new Player {      Name = "원본",      Items = new List { "검", "방패" }  }; // 얕은 복사 수행 Player player2 ..

C# 2024.12.09

c# - reflection과 Attribute에 대해 알아보자

오늘은 reflection과 Attribute에 대해 알아보고자 합니다. 1주 동안 만든 팀 과제를 제출하고 다른 팀들의 발표를 듣던 중 reflection을 사용하는 코드를 보게 되었습니다. 이름만 들어보고 사용을 한 번도 안 해봐서 이참에어떻게 사용하는지 간단하게 찾아보고 정리해 봤습니다. 자료를 찾다 보니 다들 Attribute를 묶어서 설명하더군요.일단 이것도 함께 정리해 봤습니다.  reflection 런타임 중에 객체의 형식을 가져와 사용할 수 있게 해주는 기능입니다. 관련 메서드들을 claude를 통해 깔끔하게 표로 정리해 달라고 해봤습니다. 타입을 가져오는 방식은 3가지로 나뉩니다.메서드  반환 타입설명예제GetType()Type객체의 실제 런타임 타입을 반환string str = "Hel..

C# 2024.10.23

C# - 개념 정리 6 / 예외 처리 ( try -catch , finally, Throw ,사용자 정의 예외 ), LINQ / 면접 대비

개념정리 5에서 이어집니다.2024.09.27 - [C#/기초] - C# 개념 정리 5 / 인터페이스, 열거형, 델리게이트, 이벤트, 람다, 제너릭, Func, Action, Predicate / 면접 대비  예외 처리프로그램 실행 중에 발생하는 예기치 않은 오류를 관리하기 위한 방법 네 가지의 키워드 try - catch, finally,Throw,사용자 정의 예외 를 통해 예외를 처리할 수 있다. Try - CatchTry 블록 내 예외가 발생할 수 있는 코드를 작성하고, catch에서 이를 처리한다. catch 블록은 위에서부터 순서대로 실행되며,상속 관계에 있는 경우 상위 예외 타입의 catch 먼저 실행한다.Finally예외 발생 여부와 관계없이 항상 실행되는 코드 블록 코드 블록 = 특정한 동..

C#/기초 2024.09.27

C# 개념 정리 5 / 인터페이스, 열거형, 델리게이트, 이벤트, 람다, 제너릭, Func, Action, Predicate / 면접 대비

개념 정리 4에서 이어집니다.2024.09.25 - [C#/기초] - C# 개념 정리 4/ 상속, 다형성, out, ref / 면접 대비 인터페이스 클래스가 구현해야 하는 맴버 정의하는 것 인터페이스 특징 다중 상속 지원클래스가 인터페이스를 구현할 경우 모든 인터페이스 맴버를 구현해야 한다. 인터페이스 와 추상 클래스 차이? 인터페이스  메서드를 정의만 할 뿐 구현을 갖지 않는다.모든 맴버가 public 추상 클래스  일부 동작 구현을 가지며, 추상 메서드를 포함 할 수 있다.클래스이므로 단일 상속만 가능하다.  ※ C# 8.0부터는 인터페이스도 기본 구현을 제공할 수 있고, 정적 필드를 갖는 게 가능하다.   열거형서로 관련된 상수들의 집합을 정의할 때 사용열거형의 각 상수는 정수 값으로 지정된다. e..

C#/기초 2024.09.27

C# 개념 정리 4/ 상속, 다형성, out, ref / 면접 질문 대비

개념 정리 3에서 이어집니다.2024.09.24 - [C#/기초] - C# - 개념 정리 3 / 메서드, 구조체, 클래스, 객체 / 면접 질문 대비 상속(Inheritance)기존 클래스(= 부모클래스, 기본 클래스)를 확장하거나 재사용하여새로운 클래스(= 자식 클래스, 파생 클래스)를 생성하는 방식 상속의 장점 :코드 재사용성 용이계층 구조 표현유지보수성 향상상속의 종류 단일 상속(Single Inheritance) :하나의 클래스만 상속받는 것. C#에서는 단일 상속만 지원. 다중 상속(Multilevel InHeritance) :여러 개의 부모 클래스를 동시 상속 받는 경우. 다중 레벨 상속 (Multilevel Inheritance) :상속이 여러번 이어지는 경우   계층적 상속 (Hirarchi..

C#/기초 2024.09.25

C# - 개념 정리 3 / 메서드, 구조체, 객체, 클래스, 프로퍼티 / 면접 질문 대비

개념 정리 2에서 이어집니다.2024.09.23 - [분류 전체보기] - C# - 개념 정리 2 / 변수, 배열, 컬렉션, 박싱 & 언박싱 / 면접 질문 대비메서드 (Method) 특정 작업을 수행하기 위해 사용되는 독립적 기능 단위.클래스나 구조체에서 객체의 동작 정의.  메서드 역할 :코드 재사용성 용이:가독성 향상모듈화 추상화  추상화는 객체지향 프로그래밍(Object-Oriented Programming, OOP)의특징과도 이어지므로 아래 서술  메서드 구조  [접근 제한자] [리턴타입] [메서드 이름]([매개변수]) 형태 ex) public void Test(string a){ Console.WriteLine(a);}private int Test1(int a){ int sum = a + 1;..

C#/기초 2024.09.24

C# - 개념 정리 2 / 변수, 코드 컨벤션 , 배열, 컬렉션, 박싱 & 언박싱 / 면접 질문 대비

개념 정리 1에서 이어집니다. 2024.09.20 - [C#] - C# - 개념 정리1 / C# 특징 및 기초 /면접 질문 대비 리터럴(literal) :직접 사용되는 값. (메모리 위치 안에 저장되는 값)컴파일러에 의해 상수 값으로 처리된다. 변수 :데이터를 저장하고 사용하기 위해 할당받은 공간 int a // int 자료형 변수 선언키워드(Kewords) :변수명을 지을 때, 이미 용도가 정해져 있어 사용할 수 없는 단어들 ex) public, static, if 등  식별자(identifiers) :변수, 함수, 클래스 등에 사용되는 이름  코드 컨벤션 :코드 작성 규칙-> 가독성과 유지 보수를 용이하게 하기 위해 사용. 자주 사용되는 코드 컨벤션 파스칼 케이스 (PasCal Case) : 첫 글자..

C#/기초 2024.09.23

C# - 개념 정리 1 / C# 정의 및 특징 , GC , Dispose, 네임 스페이스, 값 참조 형식, Nullable , 주석 / 면접 질문 대비

오늘은 C# 내용을 정리하는 시간을 가질까 합니다.면접 대비 겸 자료를 찾다 보니 C# 개념들에 대해서도 자세하게 물어보더라고요.몰랐던 내용뿐만 아니라 아는 내용도 확실히 짚고 넘어가고자 이렇게 정리해 봤습니다.잘못된 부분이 있다면 댓글로 알려주시면 감사하겠습니다. + 정리를 위한 글이므로 내용은 언제나 수정/ 추가 될 수 있습니다. C#이란?마이크로소프트에서 만든 객체 지향 프로그래밍 언어로서.Net 프레임워크(이하 .NetFramework로 통일)에서 컴파일된다. -> .NetFramework : 마이크로소프트에서 개발한 프로그래밍 플랫폼 동작 순서  컴파일러로 Managed Code 컴파일 - > CIL -> CLR -> Machine Code 순으로 진행 Managed Code-> .NET Pla..

C#/기초 2024.09.20

2024 내일 배움캠프(Unity_6기) _ 사전캠프 7일차(08.21) : String 과 StringBuilder에 대해 알아보자

오늘은 String과 StringBuilder에 대해 알아보고자 합니다.  String 클래스에서 메서드 중 하나를 사용할 때마다 메모리에 새 문자열 개체가 생성되므로, 새 개체에 대한 공간을 새로 할당해야 합니다.  이는 한번 값이 정해진 뒤 수정할 수 없기 때문입니다. 그럼 왜 string이 변경 불가능하게 설계가 되었을까요?찾은 자료를 요약하자면 다음과 같습니다. 1 . 같은 값을 가진 여러 문자열 변수를 가지고 있다면 같은 문자열 값에 대한 메모리를 여러 번 할당하지 않아도 된다.  2. 멀티스레드 애플리케이션에서 경쟁 조건을 제거하여 빠르게 변경할 수 있다. 3.  해시테이블에서 문자열을 키로  잘 적용하기 위해서이다. -> 해시 값이 계산되는 객체는 해시 값이 시간에 따라 일정하도록 보장하기 ..

C# 2024.08.21

2024 내일 배움캠프(Unity_6기) _ 사전캠프 6일차(08.20) : C# 문자열 보간 에 대해 알아보자

유니티에서 UI로 점수를 보여주는 창을 만들면서 점수 :  10이라는 걸 보이기 위해"점수 :" 라고 적힌  Text와숫자가 적힌 텍스트 두 개를 만들어서 사용하곤 했습니다.  하나의 Text에 값을 더하는 걸로 충분히 만들 수 있지 않을까 찾다가문자열 보간을 활용하면 간단하게 만들 수 있다는 걸 알게 되었고 공유하고자 합니다. 사용 방법은 다음과 같습니다.먼저 " " 앞에 $를 붙이고, 변수를 넣고자 하는 곳에 {}를 친 후 변수를 넣으면 됩니다. 예시입니다. float nowTime = 0.5f; int bestTime = 2; BestRecord.text = $"최고 점수 : {bestTime} 현재 점수 : {nowTime}";    원래라면   "현재 점수 : " + nowTime.ToStrin..

C# 2024.08.20