닷넷/C#
-
NullReferenceException, Null 참조 오류 등 Null 예외 처리에 대한 고찰과 지침서닷넷/C# 2024. 7. 12. 11:26
내가 8년동안 개발자로 밥 벌어 먹고 살면서 코딩하고 프로그래밍한 것이 결코 적다고 생각하지 않는다.그 수많은 일 중에서 개발 첫 날부터도 그랬고, 지금도 그렇고, 조금이라도 일의 열정이 식어 단순한 코더로써 코딩만 하거나 일이 하기 싫어 대충하게 되는 경우에, 항상 내가 같은 실수를 반복해서 하는 일이 있다.이런 실수를 저지를 때마다 아, 다음에는 좀 더 꼼꼼하게 확인해야지 해도 시간이 지나면 같은 실수를 한다.그래서 아예 이렇게 지침서를 작성하여, 매 테스트 때마다 하나 씩 확인하고, 잊지 않기 위해 노력해야겠다. 그리고 문득 이런 고찰을 하게 된다.왜 프로그램은 Null인 것을 참조하면 그냥 넘어가지 않고, 기어이 오류 메시지를 뱉어내는 걸까?왜 Null 참조 오류를 무시 하지 못 하게 하는 걸까..
-
Microsoft의 Text-to-Speech (TTS), Azure Cognitive Services를 C#에서 사용하는 방법닷넷/C# 2023. 7. 27. 10:07
TTS는 텍스트를 음성으로 변환시켜주는 기술이며, 이것을 서비스하고 API로 만든 회사들이 꽤 많이 있다. 그 중에서 Microsoft에서 제공하는 TTS를 사용하는 방법과 C#에서 적용하는 방법을 설명한다. Azure 사이트에서 1. 사이트 접속 및 계정 로그인 https://azure.microsoft.com/ko-kr/products/cognitive-services/text-to-speech Text to Speech – 현실적인 AI 음성 생성기 | Microsoft Azure AI 음성 생성기를 사용하여 합성된 음성을 사용하여 자연스럽게 말하는 앱 및 서비스를 빌드합니다. 텍스트 판독기 및 텍스트 음성 변환 기능을 사용하여 고객의 몰입도를 높일 수 있습니다. azure.microsoft.com..
-
C# Interlocked.Increment에 대한 고찰닷넷/C# 2023. 7. 20. 10:33
DB에서 인덱스를 자동증가 시키는 칼럼을 만들 수 있는 것처럼 C#에서 하나의 프로퍼티를 자동증가 인덱스로 만든 방법이 없을까 고민해보다가 챗GPT가 알려준 방법인 Interlocked.Increment를 사용했었다. 첫 번째 방법, 생성자에서 초기화 public class Info { // ... existing properties ... private static int currentIndex = 0; public int Index { get; } public Info() { Index = Interlocked.Increment(ref currentIndex); } } 두 번째 방법, 리스트에 추가할 때 인덱스 값 설정 public class Info { // ... existing propertie..
-
C# 기초지식, 정보 정리 (면접 질문 대비, 꼭 알아야 하는 것)닷넷/C# 2023. 4. 11. 18:38
미루고 미루었던, ChatGPT를 활용하면 좀 더 수월하게 작성할 수 있게 되었으므로, C#에 대해서 꼭 알아야 할 기초 지식과 정보를 정리하였습니다. (링크드인 C# 테스트를 오늘 해 봤는데 영어 독해를 잘 못 했다고 해도, 그 용어들에 대해 알았다면 쉬운 문제인데 정답을 맞추지 못한 문제들이 많아서 나의 부족을 깨닫고 다시 공부하고 정리할 겸 쓰는 건 안 비밀) 1. C#이란 C#(C-Sharp)은 Microsoft에서 개발한 객체 지향 프로그래밍 언어입니다. Anders Hejlsberg가 설계한 이 언어는 C++와 Java와 유사한 구문을 가지고 있으며, 현대적인 프로그래밍 언어의 기능을 제공합니다. C#은 .NET Framework와 함께 사용되어 다양한 종류의 Windows 응용 프로그램 개발..
-
C# 시간 계산 두 번 째 (TimeSpan, DateTimeOffset)닷넷/C# 2023. 4. 6. 10:54
2020.09.11 - [C#] - C# 시간 계산 (DateTime Add함수 월, 일, 시, 분 더하기 빼기) DateTime 형식일 때, DateTime의 Add함수를 이용 한 날짜, 시간 계산은 이전 글을 참고한다. DateTime, TimeSpan, DateTimeOffset을 사용하여 시간 계산을 수행하는 방법은 다음과 같다. using System; namespace DateTimeExample { class Program { static void Main(string[] args) { // 현재 시간 구하기 DateTime currentTime = DateTime.Now; Console.WriteLine($"현재 시간: {currentTime}"); //////////////////////..
-
C# JSON 파일 읽기/쓰기 (Deserialize/Serialize)닷넷/C# 2023. 4. 4. 16:02
2018.10.26 - [C#] - C# Json 파싱하기 전, 비주얼스튜디오 프로젝트에 Newtonsoft.Json 설치하기 2018.10.31 - [C#] - C# JSON 파싱하기 예전에 JSON 파일을 읽고 쓰는 것 보다 파싱하는 것을 먼저 작성을 했었는데 JSON 파일을 읽고 쓰는 방법은 다음과 같습니다. 1. Newtonsoft.Json 라이브러리를 사용하여 JSON 파일을 읽고 쓰는 방법 1) JSON 파일 읽기 using System.IO; using Newtonsoft.Json; // JSON 파일 경로 string filePath = "example.json"; // 파일 읽기 using (StreamReader r = new StreamReader(filePath)) { string ..
-
C# XML 파일 읽기/쓰기닷넷/C# 2023. 3. 28. 16:42
C#에서 XML 파일을 읽고 쓰는 방법은 여러 가지가 있습니다. 다음은 각 방법과 코드 예시입니다. 1. XmlReader를 사용하여 XML 파일을 읽고 쓰는 방법 1) XML 파일 읽기 (1) XmlReader를 사용하여 XML 파일을 읽습니다. using System.Xml; XmlReader xmlReader = XmlReader.Create("file.xml"); (2) XmlReader에서 필요한 데이터를 읽습니다. while (xmlReader.Read()) { if (xmlReader.NodeType == XmlNodeType.Element && xmlReader.Name == "node") { // Do something with the data } } (3) XMLReader를 닫습니다...
-
C# 계산오류? 부동 소수점에 대해 알아보자닷넷/C# 2023. 3. 2. 15:57
최근에 닷넷 오픈모임방에서 질문이 하나 올라왔다. [????] [오후 5:53] C#에서 100-63.1 하면 36.9라는 결과가 나오는데 [????] [오후 5:53] 100-64.1을 하면 35.900000000000006 라는 결과가 출력됩니다 [????] [오후 5:53] 이유가 뭔지 알 수 있을까요? [????] [오후 5:53] 사진 [????] [오후 5:54] 제 PC가 이상한걸까요.. 아님 원래 그런걸까요.. 이렇게 나오는 원인은 근사치로 계산 되는 부동 소수점 때문이다. 100-64.1부터 근사치가 되는 이유는? 64.1은 십진수에서는 정확한 수이지만, 이진수에서는 정확하게 표현할 수 없는 수이다. 따라서 부동 소수점으로 표현할 때 근사치가 된다. 즉, 64.1을 이진수로 변환하면 10..
-
C# URL 파라미터 인코딩 방법 (특수문자가 있는 경우에 사용)닷넷/C# 2022. 10. 19. 16:14
2018.10.30 - [프로그래밍/C# (WinForms, ASP.NET)] - C# URL에 들어가는 한글 UTF-8 Encoding private string GetData() { string result = string.Empty; string url = "https://api.com?value="; string value = "[value]"; // 인코딩하는 방법 string valueEncoding = System.Web.HttpUtility.UrlEncode(value); // 인코딩한 내용을 디코딩하는 방법 string valueDecoding = System.Web.HttpUtility.UrlDecode(valueEncoding); HttpWebRequest request = (Http..
-
Convert a string to an enum in C#닷넷/C# 2022. 5. 10. 14:57
In .NET Core and .NET Framework ≥4.0 there is a generic parse method: Enum.TryParse("Active", out StatusEnum myStatus); This also includes C#7's new inline out variables, so this does the try-parse, conversion to the explicit enum type and initialises+populates the myStatus variable. If you have access to C#7 and the latest .NET this is the best way. Original Answer In .NET it's rather ugly (unt..
-
c# 부팅시 자동 시작하는 프로그램, 레지스트리에 등록 또는 삭제 방법닷넷/C# 2021. 11. 30. 11:12
PC가 부팅이 된 후에 사용자가 어떠한 작업을 하지 않아도 바로 프로그램이 실행되게 설정하는 방법으로 이전에 쓴 글이 있는데 이 작업을 코드로 작성하기에는 어려운 부분이 있다. 2018.03.20 - [끄적이는/정보공유] - 윈도우 컴퓨터 시작시 *.exe 프로그램이 자동으로 실행되게 하는 방법 레지스트리 경로 SOFTWARE\Microsoft\Windows\CurrentVersion\Run 가 부팅 시 자동실행이 되는 프로그램들을 관리하는 경로이기 때문에 이 경로에 해당 실행파일을 등록 하거나 삭제하면 되므로 레지스트리에 등록하거나 삭제하는 방법은 코드로 작성하기 쉽다. C#에서 레지스트리 자동실행 경로에 프로그램을 등록하는 방법은 다음과 같다. private void SaveAutoExe() { //..
-
C# 두 위도와 경도 좌표 사이의 거리를 계산 하는 방법닷넷/C# 2021. 7. 19. 16:34
c#에서 두 위도와 경도 좌표 사이의 거리를 계산 하는 방법은 다음과 같다. 첫 번째 방법, NuGet 패키지에서 NEST를 설치한다. 설치 후 다음과 같이 코드를 작성한다. 참고로 단위는 미터이다. // c#에서 두 위도와 경도 좌표 사이의 거리를 계산 하는 첫 번째 방법 GeoCoordinate pin1 = new GeoCoordinate(lat1, lng1); GeoCoordinate pin2 = new GeoCoordinate(lat2, lng2); double distanceBetween = pin1.GetDistanceTo(pin2); 단, 이 방법은 닷넷프레임워크 버전을 타기 때문에 설치가 안 되는 경우 두 번째 방법을 사용하면 된다. 두 번째 방법, NEST가 설치 되지 않는 경우 다음의 ..
-
C# A리스트에서 B리스트에 있는 것을 제외하는 방법(LINQ)닷넷/C# 2021. 7. 13. 11:34
다음은 C#에서 LINQ를 활용하여 A리스트에서 B리스트에 있는 것을 제외하는 방법이다. 수학적 표현으로는 차집합이다. List list = listA.Where(x=> !listB.Select(y=> y.id).Contains(x.id)).ToList(); 이것을 반대로 하면 A리스트에서 B리스트에 있는 것만, 교집합이 된다. List list = listA.Where(x=> listB.Select(y=> y.id).Contains(x.id)).ToList(); 그 외에도 Except, Any, SequenceEqual 등을 이용한 방법이 있으며 다음의 사이트에서 확인할 수 있다. C# 두 개의 List를 비교하는 가장 빠른 방법 c# — 두 개의 List 를 비교하는 가장 빠른 방법 두 가지 대규모 ..
-
C# 네이버 지도 API(AI Naver-Directions 5)를 이용해서 거리 구하기닷넷/C# 2021. 5. 13. 18:25
단순히 좌표를 가지고 출발지와 도착지의 차익을 구하는 건 실제 사람이 겪는 거리와 다르다. 따라서 거리를 계산하려면 도로상황과 여러 변수들을 생각해서 계산이 이루어져야 한다. 그러나 일개 개인이 그것을 하기에는 많이 어렵다. 그러나 또 한 편으로는 네이버나 카카오에서 충분히 그런 자료들을 만들어놨음을 그들의 플랫폼을 살펴보면 충분히 알 수 있는 사실이다. (비용만 지불하면 다 되는 세상이다.) 그 중에서 C#에서 네이버 지도 API 중 Directions 5 혹은 15를 사용하는 방법에 대해 기술한다. * 상세 API 문서는 네이버 클라우드 플랫폼에서 제공 된다. driving - Directions 5 쿠키 제공 동의 당사는 고객님의 브라우징 기반 정보를 바탕으로 관련 정보 및 광고 제공을 위하여 지식..