| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | |||
| 5 | 6 | 7 | 8 | 9 | 10 | 11 |
| 12 | 13 | 14 | 15 | 16 | 17 | 18 |
| 19 | 20 | 21 | 22 | 23 | 24 | 25 |
| 26 | 27 | 28 | 29 | 30 |
- 트리구조
- 드롭다운
- 유니티
- dropdown
- dfs
- Simulation
- 너비탐색
- sparkmain(clone)
- 티스토리챌린지
- GetComponent
- raycast
- removeAll
- 최소신장트리 mst
- 오블완
- 디지털트윈
- sparkmain(clone) 무한생성
- 깊이탐색
- articulation body
- navisworks api
- 크루스칼
- 행동트리
- readonly
- 습관형성 #직장인자기계발 #오공완
- unity sparkmain(clone)
- Unity
- C#
- 최단거리 알고리즘
- unity korea
- 유니티 sparkmain(clone)
- list clear
- Today
- Total
목록C# (38)
낑깡의 게임 프로그래밍 도전기
using disposeIDisposable 인터페이스를 구현한 객체의 Dispose()를 자동 호출하여 리소스 누수 방지.주로 파일, 네트워크, 데이터베이스, 메모리 스트림 등에 사용.기본 문법public class ResourcesLoad : IDisposableusing(ResourcesLoad resourcesLoad = new ResourcesLoad()){ resourcesLoad.Cnnect();} 인덱서개념객체 내부 데이터를 배열처럼 [index] 문법으로 접근하게 해줌.컬렉션을 감싸는 클래스에 자주 사용.특징매개변수 여러 개도 가능 (this[int x, int y])get 또는 set 중 하나만 제공 가능 (읽기 전용 또는 쓰기 전용) try-catch: 예외 처리 구조목적런타..
class종료자(Finalizer)public class ItemInfo{ public IntemInfo() { Console.WriteLine("기본 생성자."); } ~ItemInfo() { Console.WriteLine("종료자"); }} this()public class ItemInfo{ public int ItemId { get; set; } public IntemInfo() { Console.WriteLine("기본 생성자."); } public ItemInfo(int itemId) : this() { ItemId = itemId; Console.WriteLine("아이템 ID를 받는 생성..
new상속을 할때 override말고 new를 쓸수있다 새로 만들어진 함수로 생각할 수 있다. sealed sealed를 class 앞에 추가해주면 상속받을 수 없다. 부모에서 override된 함수를 자식에서도 override할 수 있다. base는 각 한단계 위 부모 것이다. gotoColsole.WriteLine("start")goto start;Colsole.WriteLine("starting");start:Colsole.WriteLine("end");start사이에 있는 코드를 건너뛴다주의할 점은 가독성을 헤치는 것이다. 쓰면은 코드가 복잡해진다. 실무에서 잘 사용하지는 않는다 정렬List ints = new List();ints.Sort();List itemInfos = new List(){ ..
object모든 자료형은 object를 최상위 상속을 받게 된다. 모든 자료형을 다 받을 수 있다.int intValue = 42;ovject obj = intValue;//value타입을 reference타입으로 바꾸는 boxing작업int intValue2 = (int)obj //unboxingGiftBox giftBox = new GiftBox();object obj2 = giftbox;주의 무분별하게 사용X박싱 언박싱은 메모리상 손실과 성능상 부담을 느낀다.그래서 비슷한 상황에 제네릭을 쓰는걸 더 추천한다.static void main(string[] args){ SetValue(intValue); SetValue(giftBox);}static void SetValue(T obj){ Cons..
public class MyCollection : IEnumerable{ private int[] data; public MyCollection(int[] data) { this.data = data; } public IEnumerator GetEnumerator() { return new MyCollectionEnumerator(this.data); }}public class MyCollectionEnumerator : IEnumerator{ private int[] data; private int position = -1; public MyCollectionEnumerator(int[] data) { this...
operator를 쓰면 클래스끼리 더하거나 빼거나 등의 연산이 가능하다pubic static을 써야한다.public class Character{ public readonly int Hp; public readonly int Power; public Character(int hp, int power) { Hp = hp; Power = power; } public static Character operator + (Character a, Charater b) { return new Character(hp: a.Hp + b.Hp, power: a.Power + b.Power); } public static explic..
MVCModel (Date)View (UI)Controller (Data UI)MVC는 Model-View-Controller의 약자로, 웹 애플리케이션 구조를 체계화한 디자인 패턴. 구성 요소 Model: 데이터와 비즈니스 로직 담당 → DB와 직접 연결되거나 Entity 클래스 형태로 존재 View: 사용자에게 보여지는 화면(UI) → Razor(.cshtml) 파일로 구성됨 Controller: 사용자의 요청을 받아 Model과 View를 연결하는 중간 관리자 → URL 요청 처리, View 선택, Model 전달 담당예시 흐름 사용자가 /Product/Detail/1 요청 ProductController.Detail(int id) 호출됨 내부에서 ProductService.GetById(id) ..
일반적인 프로그래밍과 다른 방식으로 오류가 좀 발생하기도 하지만 리플렉션이 아니면 대응하기 어려운 부분도 있다.C#의 리플렉션(Reflection)은 프로그램 실행 중에 클래스, 메서드, 필드, 속성 등의 정보를 동적으로 탐색하고 조작할 수 있게 해주는 강력한 기능입니다. 주로 런타임에 타입 정보를 알아내거나, 동적으로 객체를 생성하거나, 메서드를 호출할 때 사용된다. 리플렉션이란? C#에서 타입의 메타데이터에 접근하여 코드 구조를 런타임에 읽고 조작할 수 있는 기능이다. 리플렉션 주요 기능 기능 설명타입 정보 확인클래스, 메서드, 필드, 속성 등의 구조 탐색동적 객체 생성문자열 타입 이름으로 객체 생성메서드..
ManualResetEventSlim task = new ManualResetEventSlim(false);Thread worker = new Tread(() =>{ Console.WriteLine("Sub thread start..") Thread.Sleep(2000); Console.WriteLine("Sub thread ens..") task.Set();});worker.Start();for (int i = 0; i고전적인 방식. 관리가 힘들다.aysnc await을 사용하면 스레드 풀이 오토로 관리하게 된다. 필요할때만 스레드를 생성하고 관리해줌. 구문도 간단해짐Task.Run(() =>{ Console.WriteLine("Sub thread start.."); Thread...
제네릭은 일반화 프로그래밍이라고도한다.List strings = new List();List ints = new List();위와 같이 동적으로 자료형을 할달할 수 있는 것을 제네릭이라고 할 수 있다.활용제네릭 메서드도 만들 수 있었다. 예를 들면 T라는 타입을 써서 어떤 자료형이 들어오든 동작하게 만들 수 있었다. 예를 들면 이런 식이다.처음엔 특정 타입의 Actor 목록을 가져오려고 할 때, List를 순회하면서 원하는 타입만 따로 골라내야 했다.그런데 이걸 매번 캐스팅하고 검사하려면 코드도 중복되고 귀찮았다.그래서 제네릭을 써서 재사용 가능한 메서드로 만들게 됐다.Public List GetActors() where T : ActorBase //T 는 ActorBase를 상속 받은 애들만 쓸수 있다..