본문 바로가기

CSharp/CShap Tip12

Tuple을 활용한 다중 값 반환 Tuple을 활용한 다중 값 반환  C#에서는 Tuple을 사용하여 메서드에서 여러 값을 간단하게 반환할 수 있습니다. 클래스를 만들 필요 없이 깔끔한 반환 구조를 만들 수 있어 매우 유용합니다. using System; class Program {     static void Main()     {         var (sum, product) = Calculate(4, 5);         Console.WriteLine($"합계: {sum}, 곱셈: {product}");     }     static (int, int) Calculate(int a, int b)     {         return (a + b, a * b);     } } Tuple은 여러 값을 한 번에 반환할 때 사용되며 (.. 2025. 4. 12.
lock 키워드로 멀티스레딩 동기화 lock 키워드로 멀티스레딩 동기화 멀티스레드 환경에서는 하나의 리소스를  여러 스레드가 동시에 접근할 수 있기 때문에  데이터 무결성을 유지하려면 동기화가 필수입니다. C#의 lock 키워드를 사용하면 간단하게  **임계 구역(Critical Section)**을 만들어 스레드 충돌을 방지할 수 있습니다. using System; using System.Threading; class Counter {     private int _count = 0;     private readonly object _lock = new object();     public void Increment()     {         lock (_lock)         {             _count++;       .. 2025. 4. 11.
??= 널 병합 할당 연산자 ??= 널 병합 할당 연산자C# 8.0부터 도입된 ??= 연산자는 값이 null일 경우에만 할당을 수행합니다. 조건문 없이 깔끔하게 기본값을 설정할 수 있어 가독성과 생산성을  모두 향상시킬 수 있습니다. using System; class Program {     static void Main()     {         string name = null;         name ??= "기본 이름";         Console.WriteLine($"사용자 이름: {name}");     } } 출력 결과 사용자 이름: 기본 이름 ● ??=는 변수에 값이 null일 경우에만 오른쪽 값을 할당합니다. ● if (x == null) x = y;를 더 간결하게 표현한 것과 동일합니다. ● 코드 흐름을 깔끔.. 2025. 4. 10.
s 및 패턴 매칭으로 타입 검사 간소화하기 s 및 패턴 매칭으로 타입 검사 간소화하기C#의 is 키워드와 패턴 매칭을 활용하면  객체의 타입을 검사하고 동시에 캐스팅까지  깔끔하게 처리할 수 있습니다. as와 null 체크보다 안전하고, switch와 함께 사용하면  더 강력한 조건 분기를 만들 수 있습니다. using System; class Animal { } class Dog : Animal {     public void Bark() => Console.WriteLine("멍멍!"); } class Program {     static void Main()     {         Animal pet = new Dog();         if (pet is Dog dog)         {             dog.Bark();    .. 2025. 4. 7.
readonly 필드로 불변 객체 만들기 readonly 필드로 불변 객체 만들기  readonly 키워드는 객체 생성 이후 값을  변경할 수 없는 필드를 선언할 때 사용합니다. 이 키워드를 통해 클래스의 상태를 안정적으로 유지할 수 있으며,  특히 멀티스레딩 환경에서 유용합니다. using System; class Circle {     private readonly double _radius;     public Circle(double radius)     {         _radius = radius;     }     public double Area => Math.PI * _radius * _radius; } class Program {     static void Main()     {         Circle c = new C.. 2025. 4. 4.
null-coalescing 연산자 ??로 기본값 설정하기 null-coalescing 연산자 ??로 기본값 설정하기 C#의 ?? 연산자는 값이 null일 경우 대체값을  지정할 수 있는 간결한 방법을 제공합니다. 널 검사와 기본값 할당을 한 줄로 처리할 수 있어  코드가 훨씬 깔끔해집니다. using System; class Program {     static void Main()     {         string name = null;         string displayName = name ?? "사용자";         Console.WriteLine($"환영합니다, {displayName}님!");     } } 출력 결과 환영합니다, 사용자님! ● name ?? "사용자"는 name이 null이면 "사용자"를 반환합니다. ● 이 방식은 긴 i.. 2025. 4. 3.
StringBuilder로 문자열 성능 향상시키기 StringBuilder로 문자열 성능 향상시키기  문자열을 반복적으로 연결할 때 + 연산자를 사용하는 대신,  StringBuilder를 사용하면 성능이 크게 향상됩니다. 특히 루프 안에서 문자열을 누적할 경우 StringBuilder는 메모리 낭비를 방지해 줍니다. using System; using System.Text; class Program {     static void Main()     {         StringBuilder sb = new StringBuilder();         for (int i = 1; i         {             sb.Append("Line ");             sb.Append(i);             sb.AppendLine().. 2025. 4. 2.
async void는 이벤트 핸들러에만 사용 async void는 이벤트 핸들러에만 사용 C#에서 async void 메서드는 예외 처리가 어렵고  비동기 흐름을 제어하기 힘들기 때문에  이벤트 핸들러에서만 사용해야 합니다. 그 외 상황에서는 반드시 Task 또는 Task를 반환해야 합니다. using System; using Systehttp://m.Threading.Tasks;class Program {     static async Task Main()     {         try         {             await DoSomethingAsync();         }         catch (Exception ex)         {             Console.WriteLine($"예외 처리됨: {ex.Messa.. 2025. 3. 31.
확장 메서드(Extension Methods) 사용 확장 메서드(Extension Methods) 사용  확장 메서드는 기존 클래스에 새로운 메서드를 상속 없이  추가할 수 있는 강력한 기능입니다. 코드를 더 간결하고 읽기 쉽게 만들어주며,  LINQ와 같은 라이브러리에서도 널리 사용 using System; public static class StringExtensions {     // 문자열의 첫 글자를 대문자로 바꾸는 확장 메서드     public static string CapitalizeFirst(this string input)     {         if (string.IsNullOrEmpty(input)) return input;         return char.ToUpper(input[0]) + input.Substring(1);.. 2025. 3. 24.
프로젝트 이름 변경 프로젝트 이름 변경 1. 솔루션 탐색기 - 프로젝트 우 클릭 - 이름 바꾸기 - 이름 변경 * WindowsFormsApp1 --> testName 2. 솔루션 탐색기 - 프로젝트 우 클릭 - 속성 3. 어셈블리 이름과 기본 네임스페이스 변경 * WindowsFormsApp1 --> testName 4. Ctrl + Shift + h 를 눌러 찾기 및 바꾸기 창을 띄움 5. 기타 옵션을 아래와 동일하게 맞추고 이름 변경 후 모두 바꾸기 클릭 * 상단에 변경 전(WindowsFormsApp1) 하단에 변경 후 (testName) 입력 6. 솔루션 탐색기 - 솔루션 우 클릭 - 이름 바꾸기 - 이름 변경 * WindowsFormsApp1 --> testName ​ 프로젝트 폴더 이름 변경 프로젝트 폴더의 경.. 2024. 4. 20.
C# 이란? C# 이란? C#은 세련되고 형식이 안전한 개체 지향 언어 개발자는 C#을 사용하면 .NET 에코시스템에서 실행되는 다양한 형식의 안전하고 강력한 애플리케이션을 빌드할 수 있습니다. C# 구문은 다양한 표현이 가능하면서도 간편하고 쉽게 배울 수 있습니다. C#의 중괄호 구문은 C, C++, Java 또는 JavaScript에 익숙한 사용자라면 누구나 바로 알아볼 수 있습니다. 이러한 언어에 익숙한 개발자는 일반적으로 짧은 시간 내에 C#으로 생산적인 작업을 수행할 수 있습니다. C#은 nullable 형식, 대리자, 람다 식, 패턴 일치 및 안전한 직접 메모리 액세스와 같은 강력한 기능을 제공합니다. C#은 향상된 형식 안전성과 성능을 제공하는 제네릭 메서드 및 형식을 지원합니다. C#은 컬렉션 클래스의.. 2022. 10. 5.
언어설정 팩 설치 및 변경 언어설정 팩 설치 및 변경 1.비쥬얼스튜디오 인스톨 실행 -> 2.설치 릴리즈 정보 수정 -> 3.언어팩 설치-> 4.비쥬얼스튜디오 실행-> 5.도수 -> 옵션 -> 환경->국가별 언어 선택 6.해당 언어로 선택 끝 2022. 9. 29.