프로그래밍 언어/C#
C# 문자열 공백 기준으로 분할
String.Split() 방법. 구분 기호를 지정하지 않으면 공백 문자로 문자열을 분할한다. using System; public class Example { public static void Main() { String s = "Split by\twhitespace"; string[] tokens = s.Split(); Console.WriteLine(String.Join(", ", tokens)); // 공백으로 분할 } } 여러 공간을 처리하려면 다음을 사용할 수 있다. String.Split(char[]) method 과부하 StringSplitOptions.RemoveEmptyEntries 아래 그림과 같이 옵션을 선택. using System; public class Example { pub..
C# _ Discard (변수 무시)
필요한 이유 별도의 변수를 선언 할 필요가 없다. 또한 discards를 사용하면 메모리 할당을 줄일 수 있다. 코드의 의도를 투명하게 만들고 가독성과 유지 관리성을 향상시키는데 도움된다. 예제 코드 switch를 사용한 패턴 매칭 class Program { static void ProvideString(string statement) => Console.WriteLine(statement switch { "x" => "hello, x world", null => "hello, null world", _ => "hello, world" }); static void Main(string[] args) { ProvideString("x"); ProvideString(null); ProvideString("..
C# 오버플로우(Overflow), 언더플로우(Underflow)
오버플로우 변수는 데이터를 담는 그릇과 같다. 그릇에 용량을 넘어사는 양의 물을 담으면 넘치는 것처럼, 변수에도 데이터 형식의 크기를 넘어서는 값을 담으면 넘쳐 흐른다. 이런 현상을 "오버플로우(Overflow)"라고 한다. using System; namespace FlowExam { class FlowExample { static int Main(string[] args) { byte variable = byte.MaxValue; Console.WriteLine($"{variable}"); // 오버플로우 발생 variable++; Console.WriteLine($"{variable}"); return 0; } } } /* 결과 255 0 */ byte의 최대값은 255이다. 255는 이진수로 변환..
C# Thread 클래스 (스레드)
스레드의 생성 C#에서 쓰레드를 만드는 기본적인 클래스로 System.Threading.Thread라는 클래스가 있다. 이 클래스의 생성자(Constructor)에 실행하고자 하는 메서드를 델리게이트로 지정한 후, Thread클래스 객체에서 Start() 메서드를 호출하면 새로운 쓰레드가 생성되어 실행되게 된다. 아래 예는 동일 클래스 안의 Run() 메서드를 실행하는 쓰레드를 하나 생성한 후 실행시키는 예제이다. 예제에서는 기본적으로 생성된 메인 쓰레드에서도 동일하게 Run()메서드를 호출하고 있으므로, Begin/End문장이 2번 출력되고 있는데, 이는 2개의 쓰레드가 동시에 한 메서드를 실행하고 있기 때문이다. namespace MultiThrdApp { using System; using Syst..
C# Task 클래스
Task 클래스와 이의 Generic형태인 Task클래스는 .NET 4.0에 도입된 새로운 클래스들로서 쓰레드풀로부터 쓰레드를 가져와 비동기 작업을 실행한다. Task 관련 클래스들과 Parallel 클래스들을 합쳐 Task Parallel Library(TPL)이라 부르는데, 이들은 기본적으로 다중 CPU 병렬 처리를 염두에 두고 만들었다. Task 클래스는 .NET 4.0 이전 버전의 ThreadPool.QueueUserWorkItem()와 같은 기능을 제공하지만, 보다 빠르고 유연한 기능을 갖추고 있다. Task클래스 사용을 위해 흔히 사용되는 방법은 Task.Factory.StartNew()를 사용하여 실행하고자 하는 메서드에 대한 델리케이트를 지정하는 것이다. 이 StartNew()는 쓰레드를 ..
C# foreach 사용법과 다양한 예제
1. foreach 의미 끝을 지정해주는 다른 반복문과 달리, 인자로 들어온 itrable-item의 내부 인덱스 끝까지 알아서 순환을 해주는 반복문이다. foreach (element in iterable-item) { // body } : 여기서 element는 데이터 타입과 변수명을 포함하고. 아래와 같이 사용된다. : foreach(string str in arr); : foreach(데이터타입 변수명 in 배열,컬렉션등) 2. foreach 예제1 - 1차원 배열에서의 foreach public static void Main(string[] args) { int[] arr = { 11, 12, 13, 14, 15, 16, 17 }; //foreach문 Console.WriteLine("## fo..
C# 배열 복사
1. Array.CopyTo(Array destArray, int index) // srcArray의 데이터를 인자로 전달한 destArray에 저장한다. // destArray의 마지막 인자의 인덱스 부터 저장된다. byte[] sourceArray = new byte[10]; // 복사를 할 배열 byte[] destinationArray = new byte[10]; // 복사를 당할 배열 // 복사 할 배열의 데이터를 삽입 for (int i = 0; i < 10; ++i) sourceArray[i] = (byte)i; // 복사하기전 복사를 당할 배열의 데이터를 출력 for (int i = 0; i < 10; ++i) Console.Write($"{destinationArray[i]} "); //..
C# 배열 초기화, 다차원배열, 가변배열에 대해서
1. C# 배열의 선언 초기화 사용 방법 (Array) -> 배열이란 ? : 배열이란 관련있는, 비슷한 데이터를 효과적으로 관리하기 위한 자료구조다. : 배열을 이용하면 연관되어있는 데이터들을 for문과 결합하여 손쉽게 순회 할 수 있다. C#에서의 배열 선언 방법 1. 기본 모양 - 자료형[] 변수이름 = new 자료형[N] { 초기화 하거나 안하거나}; 2. 배열의 요소 개수를 지정하고 선언과 동시에 초기화 하는 방법 - int[] arr1 = new int[5] { 11, 12, 13, 14, 15 }; 3. 배열의 요소 개수를 지정하지 않고 선언과 동시에 초기화 하는 방법 - int[] arr1 = new int[] { 11, 12, 13, 14, 15 }; 4. 배열의 요소 개수를 지정하고, 추..
C# 제네릭 형식 제약 조건 (where)
제네릭 제약 조건 추가 class GenericClass { public T objMember { get; set; } } class Program { static void Main(string[] args) { GenericClass genericObj1 = new GenericClass(); GenericClass genericObj2 = new GenericClass(); GenericClass genericObj3 = new GenericClass(); } } 제네릭은 모든 타입을 허용하는 기법이므로 GenericClass 클래스의 objMember 멤버 변수는 값 형식인 int형이 될 수도 있고 참조 형식인 string형과 ArrayList 타입도 가능하다. "GenericClass 클래스의 o..
C# string.format, 문자열 보간($)을 이용한 문자열 출력 방법
1. C# string 출력 방법 : 기본 출력 //직접 Console.WriteLine("BlockDMask1"); //변수 이용 string str2 = "BlockDMask2"; Console.WriteLine(str2); 2. C# string 출력 방법2 : Format() 메소드 //format 이용 방법1 Console.WriteLine("Example1 : {0}, {1}", "BlockDMask", 1212); //format 이용 방법2 int num = 999; string str1 = string.Format("Example2 : {0}, {1}, {2}", "BlockDMask", 3434, num); 3. C# string 출력 방법3 : 문자열 보간 //문자열 보간 이용 방법 ..