프로그래밍/C# 54

[C#] 지정한 문자로 문자열 분할하기

Split 메서드를 사용하면 지정한 문자로 해당 문자열을 분할할 수 있습니다. Split 사용 예제1 공백으로 분할하기var text = "안녕하세요, Vicotory Ha 입니다."; var res = text.Split(" "); Split 사용 예제2 ,와 공백으로 분할하기 var text = "where is car."; var res = text.Split(new [] {" ",","}, StringSplitOptions.RemoveEmptyEntries); StringSplitOptions.RemoveEmptyEntries 옵션을 지정하면 빈 배열 요소를 포함하지 않게 합니다.

프로그래밍/C# 2022.05.07

[C#] Thread 동기화하기 Lock , Monitor

Lock C# 서비스 개발에 있어 비동기 프로그래밍은 필수적이라고 할 수 있다. 멀티 쓰레드를 사용하여 리소스에 동시에 액세스하여 빠른 처리가 가능하다. 한 개의 데이터를 여러개의 쓰레드가 동시에 접근, 변경하는 경우 Thread Unsafe하다고 말한다. Lock키워드는 특정 블럭의 코드(Critical Section이라 부른다)를 한번에 하나의 쓰레드만 실행할 수 있도록 해준다. 한번에 하나의 쓰레드만 사용하기 때문에 Thread Safe 하다고 말할 수 있다. Critical Section은 가능한 한 범위를 작게하는 것이 좋다. class SampleProgram { private static object _lock = new object(); static void Main(string[] arg..

프로그래밍/C# 2022.04.01

[C#] LINQ 연습하기

LINQ 연습하기 Exists ForEach Where Select using System; using System.Collections.Generic; using System.Linq; namespace Sample_TEST { class SampleProgram { public static void Main(string[] args) { // list 선언 및 초기화 var nums = new List { 12, 87, 94, 14, 53, 20, 40, 35, 76, 91, 31, 17, 48 }; //Q1. LINQ의 Exists 메서드 사용하여, 8, 9로 나누어 떨어지는지 확인 if (nums.Exists(x => x % 8 == 0 || x % 9 == 0)) Console.WriteLine..

프로그래밍/C# 2022.03.27

[C#] 문자열 거꾸로 변환하기

String 변수 거꾸로 출력하기 string 형 변수의 문자열을 거꾸로 바꿔 출력하는 방법을 알아봅시다. EX> "안녕하세요" -> "요세하녕안" using System; namespace Sample_TEST { class SampleProgram { public static void Main(string[] args) { // str 변수 선언 및 초기화 string str = "Hello World."; // str을 char형 배열로 변환 후 reversStr변수에 초기화 char[] reverseStr = str.ToCharArray(); // Array.Reverse()메서드 사용하여 // 매개변수의 요소들을 역순으로 재배열 Array.Reverse(reverseStr); // str 문자열..

프로그래밍/C# 2022.03.27

[C#] Thread 2개 사용하여 변수 값 공유 테스트

Thread 2개를 사용하게 될 때, 각 Thread 별 가지고 있는 변수가 있다. 아래 코드는 Thread끼리 변수의 값을 공유하는지 확인하는 테스트이다. using System; using System.Threading; namespace Sample_TEST { class ThreadTestProgram { public static void Main(string[] args) { Thread thread = new Thread(() => Run(0)); // 1번째 Thread 실행 thread.Start(); // 5초 지연 시킨다. Thread.Sleep(5000); // 2번째 Thread 실행 Run(1); } public static void Run(int idx) { // Thread 별..

프로그래밍/C# 2022.03.22

[C#] LINQ 이용하여 리스트 2개 비교

Linq에는 두 목록을 비교하는 유용한 방법이 있습니다. Intersect 리스트의 어떤 요소가 포함되어 있는지 확인할 수 있습니다.var source = new List() { "a", "b", "c" }; var compare = new List() { "b", "c", "d" }; var result = source.Intersect(compare); 결과 Except 리스트에 포함되지 않은 요소를 확인할 수 있습니다.var source = new List() { "a", "b", "c" }; var compare = new List() { "b", "c", "d" }; var result = source.Except(compare); 결과 예외사항 아래 예제처럼 Person Class의 요소를 비..

프로그래밍/C# 2022.03.22

[C#] CSV 파일 생성 및 쓰기

CSV 파일 생성 다음 예제는 CSV파일 생성 및 쓰기 기능을 구현합니다. List과 StringBuilder를 활용합니다. StringBuilder 를 사용하면 문자열을 조합할때마다 새로운 변수를 생성하지 않고 결합할 수 있습니다. 내부에 함수가 존재해서 값들을 조합하거나 삭제할때에도 새로운 인스턴스가 생성되지 않습니다. static void Main(string[] args) { string filePath = @"C:\Users\A\Desktop\csv file\file.csv"; List list = new List(); StringBuilder stringBuilder = new StringBuilder(); list.Add("Emma, 010-8842-1344"); list.Add("YG, 0..

프로그래밍/C# 2021.12.01

[C#] Linq - Enumerable.Aggregate

Enumerable.Aggregate 우선, Aggregate는 합계, 총액 이란 뜻으로 직역합니다. Aggregate는 시퀀스에 걸쳐 누적기 함수를 적용합니다. seed(매개변수1)은 초기 누적기 값으로 사용됩니다. Enumerable.Aggregate(seed, func, resultSelector); - 매개변수1 : 누적 시 초기 값으로 사용됩니다. - 매개변수2 : 매개변수1를 포함하여 함수 실행 후 반환합니다. - 매개변수3 : 매개변수2의 반환 값에 대해 함수 실행 후 반환합니다. 사용 예제1 string[] arr_str = new string[] { "a","b","c"}; int[] arr_int = new int[] { 2, 3, 4 }; var res_int = arr_str.Agg..

프로그래밍/C# 2021.10.23

[C#] 확장 메서드 (Extension Method)

확장 메서드 확장명 메서드를 사용하면 새 파생 형식을 만들거나 다시 컴파일하거나 원래 형식을 수정하지 않고도 기존 형식에 메서드를 "추가"할 수 있습니다. 확장 메서드는 정적 메서드이지만 확장 형식의 인스턴스 메서드인 것처럼 호출됩니다. 이제 int, string 형 변수에서 사용할 수 있는 IsEven(), Dash() 확장 메서드를 선언해봅시다. 확장 메서드 정의하기 우선 확장메서드를 작성하기에 앞서 조건이 크게 3가지가 존재합니다. 첫째. 확장메서드를 가지는 클래스는 Static 이어야 합니다. 둘째, 확장메서드는 Static 이어야 합니다. 셋째, 확장메서드의 첫번째 매개변수는 this지시어를 붙여야합니다. 즉 예제에서, int타입의 변수에 IsEven이라는 메서드를 추가해서 사용하겠다는 것을 의..

프로그래밍/C# 2021.10.19