본문 바로가기
반응형

개발/C#18

[C#] 해시셋(HashSet) 활용하기 해시셋(HashSet) 활용하기 해시셋(HashSet)은 중복을 허용하지 않고 빠른 검색을 제공하는 자료구조중 하나입니다. c#에서 사용하는 해시셋(HashSet)에 대해서 알아봅니다. 1. 해시셋(HashSet)의 특징 1. 중복 요소 제거 : 중복된 값을 허용하지 않습니다. 새로운 값을 추가할 때 이미 존재하는 값이라면 무시됩니다. 2. 빠른 검색 속도 : 해시 테이블을 사용하므로 데이터를 빠르게 검색할 수 있습니다. 많이 사용하는 리스트나 배열보다 훨씬 빠릅니다. 3. 순서가 없음 : 데이터를 순서대로 저장하지 않습니다. 데이터의 저장 순서가 중요하다면 리스트나 배열을 사용하는 것이 좋습니다. 2. 해시셋(HashSet) 사용 예시 using System.Collections.Generic // H.. 2023. 12. 16.
[C#] 딕셔너리(Dictionary) 완벽 사용법 딕셔너리(Dictionary) 완벽 사용법 딕셔너리(Dictionary)는 키와 값 쌍을 저장하는 자료구조이며 이번에는 C#에서 딕셔너리(Dictionary)를 사용하는 방법에 대해 알아봅니다. 1. 딕셔너리(Dictionary) 생성 C#에서 딕셔너리는 ' Dictionary' 형태로 사용되며 다양한 데이터 타입을 지원합니다. using System.Collections.Generic; //딕셔너리 생성 Dictionary myDictionary = new Dictionary(); 2. 요소 추가 및 업데이트 딕셔너리에 새로운 키-값 쌍을 추가하거나 이미 존재하는 키의 값을 변경할 수 있습니다. //딕셔너리 생성과 동시에 요소 추가하면서 초기화 Dictionary myDictionary = new Di.. 2023. 12. 11.
[C#] 리스트(List)에서 자주 사용하는 함수 리스트(List)에서 자주 사용하는 함수 리스트(List)는 프로그래밍 언어에서 사용되는 중요한 자료구조 중 하나이며 데이터를 순서대로 저장하고 관리합니다. 이번에는 C#에서 리스트(List)를 사용하는 방법에 대해서 알아봅니다. 1. 리스트 생성 최초에 리스트를 생성합니다. using System.Collections.Generic; List myList = new List(); 2. 요소 추가 다양한 방법으로 요소를 추가할 수 있습니다. //기본적인 요소 추가 방식 List myList1 = new List(); myList1.Add(1); myList1.Add(2); myList1.Add(3); //요소와 함께 초기화 방식 List myList2 = new List() {1,2,3}; //반복문을 .. 2023. 12. 11.
[C#]문자열(string)변수의 정의 방법 (string.format, $ 등) 문자열(string) 변수의 정의 방법 C#에서 문자열(string)의 다양한 정의 방법에 대해 살펴봅니다. 1. 리터럴 문자열(Literral String) 가장 기본적인 형태의 문자열로 코드에 직접 값을 할당합니다. 입력 : string literalString = "Hello, World!"; Console.WriteLine(literalString); 결과 : 2. string.Format 함수 "string.Format"함수를 사용하여 문자열을 형식화할 수 있습니다. 입력 : string formattedString = string.Format("Name: {0}, Age: {1}", "Lee", 32); Console.WriteLine(formattedString); 결과 : 3. 문자열 보간.. 2023. 12. 10.
C#에서 partial 키워드로 코딩하기 partial 키워드 C#에서 클래스, 구조체, 인터페이스, 메서드 등을 여러 파일에 나누어 작업할 수 있게 하는 기능을 제공합니다. partial 키워드를 사용하면 큰 코드파일을 여러 부분으로 나누어 관리할 수 있으며, 여러 사람이 함께 작업할때 효율적입니다. 예시 //파일 MyClassPart1.cs partial class MyClass { public int function01() { return 1; } } //파일 MyClassPart2.cs partial class MyClass { public int function02() { return 2; } } 2023. 11. 10.
c# List나 Dictionary 의 capacity 설정 c# List나 Dictionary 의 capacity 설정 capacity는 크기를 조정하지 않고 포함될 수 있는 요소 수입니다. 혹시 List나 Dictionary를 사용할때 미리 메모리를 할당하면 좋을까? 한번 찾아봤다. C# program that tests capacity using System; using System.Collections.Generic; class Program { const int _m = 100000; static List _values = new List(); public static void Main() { // Add 100 strings for testing. for (int i = 0; i < 100; i++) { _values.Add("value" + i.ToS.. 2021. 2. 23.
c# ? 연산자 사용하기 코드를 작성하다가 보면 우리는 오류를 피하기위해 null 체크를 자주 하게됩니다. 보통 null 체크를 할때는 if문에서 null인지 아닌지 체크를 합니다. 그런데 이를 간결하게 체크할 수 있게 해주는 연산자가 있습니다. 바로 ? 연산자 입니다. 바로 예시를 들어보겠습니다. List testList = null; ... if(testList!=null) testList.add(77); testList를 null체크해서 null이 아니면 77을 추가하는 코드입니다. 이 코드를 ? 연산자를 사용해보겠습니다. List testList = null; ... testList?.add(77); testList 뒤에 ? 를 사용함으로써 null 체크를 하고 null이 아니면 Add함수를 실행하는 코드가 됩니다. 2021. 2. 23.
[C#]Math.Round 반올림 함수 이슈 c# Math.Round 소수점 이하를 반올림 합니다. 가장 가까운 정수로 반올림 문제점 0.5 일때 가장 가까운 짝수 정수로 리턴 합니다. ex) 11.5 는 12로 반올림이되고, 12.5는 12로 반올림 됩니다. 일반적으로 우리는 0.5일때 반올림을 하면 +0.5를 합니다. 위의 문제를 해결하는 방법으로는 MidpointRounding 을 AwayFromZero로 지정하면 됩니다. [함수원형] public static double Round (double value, MidpointRounding mode); [사용 예시] Math.Round(2.5f,MidpointRounding.AwayFromZero); [참조] https://docs.microsoft.com/ko-kr/dotnet/api/sys.. 2020. 12. 24.
[C#] 다차원 배열 다차원 배열의 초기화 int[,] array1 = { { 2, 5, 3 }, { 4, 4, 1 }, { 1, 7, 3 } }; //또는 int[,] array2 = new int[,]{ { 2, 5, 3 }, { 4, 4, 1 }, { 1, 7, 3 } }; 다차원 배열의 접근 int item1 = array[0,0]; int item2 = array[0,1]; 다차원 배열의 길이 //Length = 행*열 = 배열안에 모든 값의 개수 int totalLength = array.Length; //GetLength(int dimension) = 해당 차원에 배열 길이를 반환 //주로 사용하게될 함수 int Length = array.GetLength(0); 2020. 12. 22.
C# 연산자 종류 연산자 타입 연산자 예제 산술 연산자 +, -, *, /, % int a = (x + y - z) * (b / c) % d; 할당 연산자 =, +=, -=, *=, /=, %= int a = 100; sum += a; [설명] sum += a 는 sum = sum + a 를 축약한 표현이다. 증감 연산자 ++, -- int i = 1; i++; [설명] i++ 는 i = i + 1 를 축약한 표현이다. 논리 연산자 && (And), || (Or), ! (Not) if ((a > 1 && b =, , 2020. 11. 19.
[C#]URI 문자열을 이스케이프된 표현으로 변환합니다. Uri.EscapeUriString(String) URI 문자열을 이스케이프된 표현으로 변환합니다. [함수원형] public static string EscapeUriString(string stringToEscape); [Parameters] 이름 타입 설명 stringToEscape string 이스케이프할 문자열입니다. [출처]docs.microsoft.com/ko-kr/dotnet/api/system.uri.escapeuristring?view=netcore-3.1 프로젝트를 하다가 파일 다운로드가 안되는 이슈가 있었다. iOS 기기에서 특정 파일이 다운로드가 되지 않았고, 해당 파일의 이름이 한글로 되어있었다. 한글 파일을 이스케이프 해보니 string이 모두 깨져버렸다. 이를 해결하기 위해 한.. 2020. 10. 8.
delegate란 무엇일까? delegate란 무엇일까? delegate의 사전적 의미로는 1. (집단의 의사를 대표하는) 대표(자) 2. (권한업무 등을) 위임하다 3. (대표를) 뽑다 라고 네이버 영어사전에 나오네요. 프로그래밍에서는 대리자로 사용됩니다. 즉 누군가를 대신해서 일을 해주는 역할입니다. 델리게이트는 메소드를 참조합니다. 메소드의 주소를 할당한후 델리게이트를 호출하면 델리게이트가 할당한 메소드를 호출하는 것이죠. 비교하자면 C++에 포인터랄까요. 델리게이트의 문법입니다. 델리게이트는 메소드 문법과 똑같고 이름 앞에 delegate 키워드만 붙여주면 됩니다. public delegate int CustomDelegate(int src); 예를 들면 이렇게 사용합니다. 메소드를 참조해야 하기 때문에 메소드 문법과 같게 .. 2020. 9. 22.
728x90