C#25 int.TryParse() 와 Convert.ToInt32() 중 어떤 걸 써야하나? 고민된다면 문자열을 정수로 변환할 때, C# 에서는 주로 Convert.ToInt32()와 int.TryParse()를 사용합니다. 두 방식은 결과는 비슷해 보이지만, 동작 방식과 성능 특성에서 큰 차이를 가집니다. Convert.ToInt32(string)int number = Convert.ToInt32("123"); * 문자열을 정수로 변환합니다* 실패 시 FormatException 예외를 발생시킵니다try{ int number = Convert.ToInt32("abc"); Console.WriteLine($"변환 성공: {number}");}catch (FormatException){ // FormatException 발생 Console.WriteLine("변환 실패: 형식이 올바.. 2025. 4. 2. C# 에서 ref, out, in 키워드 정리 C# 에서 ref, out, in 은 모두 참조에 의한 전달(pass by reference) 을 위한 키워드입니다.이름만 보면 ref 만 참조처럼 보이지만, 세 키워드 모두 실제로는 값을 복사하지 않고 메모리 주소(참조)를 넘깁니다.이 키워드들은 주로 다음과 같은 목적에 사용됩니다 * 함수 안에서 값을 변경하고, 호출한 쪽에도 반영하고 싶을 때 → ref, out* 구조체처럼 큰 데이터를 복사하지 않고 효율적으로 넘기고 싶을 때 → in* 아래에서 각각의 특징과 사용법을 간단한 예제와 함께 정리합니다. ref* 함수 밖에서 선언된 변수를 전달하고, 함수 안에서 수정한 값을 받아올 수 있음* 따라서 함수 호출 전에 반드시 초기화된 변수여야 함* 값 타입도 참조로 전달되어 복사 없이 직접 수정 가능vo.. 2025. 4. 2. C# 에서 readonly 는 참조 타입에서 어떻게 동작할까? C#에서 readonly 키워드는 필드가 "한 번만 초기화될 수 있다"는 의미를 갖습니다. 많은 개발자들이 이 키워드를 단순히 "변경 불가"로 이해하지만, 참조 타입에 적용되었을 때는 조금 다르게 동작한다는 점을 놓치는 경우가 많습니다.이 글에서는 readonly 키워드가 값 타입과 참조 타입에서 어떻게 다르게 작동하는지, 그리고 참조는 고정되지만 내부 값은 바뀔 수 있다는 사실을 예제와 함께 정리합니다. 값 타입에서의 readonlyreadonly가 값 타입(int, float, bool 등) 에 붙으면, 해당 변수는 초기화된 값을 절대 변경할 수 없습니다.readonly int number = 10;number = 20; // ❌ 컴파일 오류 - 값 변경 불가 값 타입은 변수 자체가 데이터를 직접 .. 2025. 4. 1. List<T> 의 동작 방식 C#에서 List는 객체의 메모리를 직접 관리하지 않습니다. 리스트에서 요소를 제거하더라도, 실제 객체의 메모리는 해제되지 않습니다. 이는 C++처럼 delete를 명시적으로 호출하는 방식과 다릅니다. 요소 제거와 메모리 관리List list = new List();MyClass obj = new MyClass();list.Add(obj);list.Remove(obj); // 리스트에서 제거됨 위 코드에서 list.Remove(obj); 를 호출하면 리스트에서는 obj 가 제거됩니다. 하지만 obj는 여전히 메모리에 남아 있으며, 다른 곳에서 참조하고 있다면 계속 사용할 수 있습니다. GC의 역할C#의 Garbage Collector(GC)는 더 이상 참조되지 않는 객체를 감지한 후, 적절한 시점에 메.. 2025. 3. 16. 람다 표현식을 사용할 때 헤깔리는 이유 C# 에서는 람다 표현식을 활용하여 속성(Property)과 메서드(Method)를 간결하게 표현할 수 있습니다. 하지만 둘은 형태가 매우 유사해 보이기 때문에 혼동할 수 있습니다. 이 글에서는 람다 표현식을 사용한 속성과 메서드의 차이를 살펴보고, 언제 어떤 방식을 사용하는 것이 적절한지 알아보겠습니다. 람다 표현식을 사용한 속성과 메서드다음 두 코드를 비교해 보겠습니다.class Example { public int Age => 30; // 속성 (Property) public int Age() => 30; // 메서드 (Method)} 하나는 속성이고 하나는 함수입니다.람다 표현식으로 코드를 축약했기 때문에 언뜻 보면 비슷해서 헷갈릴 수 있습니다.하지만 자세히 보면 괄호 () 의 유무로.. 2025. 3. 15. delegate 를 기반으로 한 상태 기계 구현해보기 C#에서 상태 기계를 구현할 때, if-else 또는 switch-case 문을 사용하는 방식보다 델리게이트(delegate)를 활용하면 코드의 가독성과 유지보수성이 훨씬 좋아집니다.이 글에서는 델리게이트를 활용한 상태 기계 구현 방법을 설명하고, 자기 클래스 내부에서 직접 상태를 변경하는 구조를 적용하는 방법을 소개하겠습니다. 상태 기계 (State Machine) 란?상태 기계는 프로그램이 특정 상태 (State) 를 가지며, 조건에 따라 다른 상태로 전환되는 구조를 의미합니다. 게임 개발에서 자주 사용되며, 플레이어의 행동, UI 상태, AI 동작 등을 관리하는 데 유용합니다. 상태 기계를 사용하는 이유* if-else 또는 switch-case 문을 줄여 코드의 가독성을 높일 수 있습니다.* 상.. 2025. 3. 12. 이전 1 2 3 4 5 다음