본문 바로가기

C#38

[C#] C#과 .NET framework 소개 (Introduction to C# and the .NET framework) C#은 2000년에 Microsoft에서 개발한 대중적이고 현대적인 객체 지향 프로그래밍 언어입니다. C#은 데스크톱 응용 프로그램에서 웹 응용 프로그램, 모바일 및 게임 응용 프로그램에 이르기까지 광범위한 응용 프로그램을 구축하는 데 널리 사용됩니다. C#은 또한 응용 프로그램과 서비스를 구축, 배포 및 실행하기 위한 플랫폼인 .NET 프레임워크의 기본 프로그래밍 언어입니다. 이 글에서는 C# 및 .NET 프레임워크를 소개하고 이들이 개발자에게 중요한 이유를 살펴봅니다. C#이란? C#은 간단하고 배우기 쉽고 표현력이 풍부하도록 설계된 정적 형식의 명령형 프로그래밍 언어입니다. 소규모 유틸리티 프로그램에서 복잡한 엔터프라이즈 애플리케이션에 이르기까지 광범위한 애플리케이션을 구축하는 데 사용됩니다. 개발.. 2023. 2. 12.
[C#] 디자인 패턴 in C#: Singleton, Factory, and Observer Patterns (싱글톤, 팩토리, 옵저버 패턴) 이전부터 사내 선배 개발자 분들께서 어떤 부분을 싱글톤으로 바꾸었다고 몇번 말씀하셔서, 싱글톤에 대해 알아보다가 디자인 패턴을 알게 되었습니다. 알아봐도 잘 모르겠지만, 메모는 남겨둡니다. 디자인 패턴은 소프트웨어 개발의 근본적인 측면이며 개발자가 직면하는 일반적인 문제에 대한 입증된 솔루션 역할을 합니다. C#의 세계에는 모범 사례로 널리 사용되고 인정되는 몇 가지 디자인 패턴이 있습니다. 이 글에서는 C#에서 가장 인기 있는 세 가지 디자인 패턴인 Singleton, Factory 및 Observer를 살펴보겠습니다. Singleton Pattern Singleton 패턴은 인스턴스에 대한 글로벌 액세스 지점을 제공하면서 클래스에 인스턴스가 하나만 있는지 확인하는 생성 패턴입니다. 이 패턴은 코드의 .. 2023. 2. 12.
[C#, Unity] 캐릭터 움직임 2D 게임 개발 중, 각 메소드에 대한 설명 Input.GetKeyDown = 키를 누르는 순간 Input.GetKey = 키를 누르고 있는 동안 Input.GetKeyUp = 키를 떼는 순간 transform.Translate(x, y, z) = x, y, z 축으로 정한만큼 이동 unity의 transform.Translate는 1초당 화면 깜빡임 (frame)으로 오브젝트의 움직임을 표현한다. 따라서 각 기기마다 프레임이 다를 수 있다. 갤럭시 휴대폰도 60Hz, 120Hz 중 고를 수 있다. 따라서 게임 개발자가 프레임당 속도를 5로 지정하고, 60Hz로 플레이하는 사람이 있다고 한다면 1초당 5 * 60 = 300의 속도로 캐릭터가 움직이는 게임을 할 것이고 120Hz로 플레이하는 사람은 5 *.. 2023. 2. 5.
[C#] 클래스의 속성에 변수로 접근하기 구글에 검색은 아래와 같이 하였다. c# access class property by name 그 중 첫번째 결과에 들어갔고, https://stackoverflow.com/questions/10283206/setting-getting-the-class-properties-by-string-name Setting/getting the class properties by string name What I'm trying to do is setting the value of the property in a class using a string. For example, my class has the following properties: myClass.Name myClass.Address myClass.Pho.. 2023. 1. 5.
[C#] Cannot deconstruct dynamic object 해결하기 dynamic 형식을 하나 받아서 여러가지 변수를 한 메소드 안에서 만드려고 하니 Cannot deconstruct dynamic object 와 같은 에러가 떴다. 모두 영어로 검색 결과가 뜨길래 한국어 결과로 하나 나오게 해보자며 쓴다. 방법은 2가지가 있다. 1. Casting class Deconstruct { static void Main() { dynamic d = new Test(); // Variables we want to deconstruct into string text; int number; // Approach 1: Casting (text, number) = ((string, int)) d.Method(); } public (string, int) Method() => ("tex.. 2022. 7. 26.
[C#] 테스트 케이스 첫 작성 참조: https://docs.nunit.org/2.5/testCaseSource.html NUnit.org TestCaseSourceAttribute (NUnit 2.5) TestCaseSourceAttribute is used on a parameterized test method to identify the property, method or field that will provide the required arguments. The attribute has two public constructors. TestCaseSourceAttribute(Type s docs.nunit.org 공식 문서 등 다른 테스트 케이스에 관한 자료가 많았지만, 모두 하나의 데이터에 대한 테스트여서 여러가지를 테스트 해.. 2022. 6. 15.
[C#] 상대 경로가 같은 여러 게시 출력 파일을 찾았습니다 C# 개발 중 "상대 경로가 같은 여러 게시 출력 파일을 찾았습니다" 라는 에러를 받았다. 구글에 검색해보니 흔한 에러는 아닌듯이 답변이 많지 않았다. 다행히 제일 위 게시물이 dotnet 에러 메세지 github였고, 거기서 힌트를 얻을 수 있었다. https://github.com/dotnet/sdk/blob/main/src/Tasks/Common/Resources/xlf/Strings.ko.xlf GitHub - dotnet/sdk: Core functionality needed to create .NET Core projects, that is shared between Visual Studio and CLI Core functionality needed to create .NET Core pro.. 2022. 3. 18.
[C#] 웹 크롤링을 이용하여 자동 출석체크 하는 방법 배경 서점에 매주 가서 책을 사다보니 할인 받는 방법을 알게 되었고, 그 중 하나가 바로 출석체크였다. 얼마전까지만 해도 해당 서점에 가야만 출석체크가 되는 줄 알았다... 하지만 그건 체크인이었다. 어쨌든 어디서든 하루에 한번 출석체크를 할 수 있다는 사실을 알고, 크롤링을 만들어야겠다고 생각했다. 알아보니 크롤링을 하는 라이브러리인 Selenium을 Python이 아닌 C# 등 많은 다른 언어에서 쓸 수 있었다. 구현 그래서 아래와 같은 4개의 Nuget Package들을 깔았고, 또 아래와 같은 간단한 코드로 늦은 밤에 하나 하고 자려고 한다. using System; using System.Threading; using OpenQA.Selenium; using OpenQA.Selenium.Chro.. 2022. 2. 17.
[C#] 달(월)의 마지막 날 구하기 매월 마지막 날, 보고서를 보내줘야 하는 일이 생겼습니다. DateTime에 LastDay 같은 함수가 있을거라 생각하여 찾아보았는데 그런건 없고, 값은 똑같지만 의미가 약간 다른 함수를 찾았습니다. 그 달의 날짜 개수 구하기. DateTime.DaysInMonth(year, month) year, month에 int 값을 넣으면 그 해의, 그 달의 날짜 개수를 구해줍니다. 마지막 날짜와 같아서 유용하게 사용할 수 있습니다. 2022. 2. 15.