c# 7

[C#] 타입(1) 값 형식의 변수

값 타입개요  타입(Type)은 변수의 형식이며 길이나 값을 해석하는 방식을 결정한다. 즉, 데이터의 특성을 정의하고, 해당 데이터를 어떻게 저장하고 조작할지 결정하는 중요한 요인이다. C#에서는 위의 표와 같이 타입을 크게 값 타입과 참조 타입으로 나눌 수 있다. 값과 참조에 대해 깊게 고찰해봐야 하지만, 이는 추후에 다루기로 하고, 값 타입의 변수들에 대해 먼저 알아보자.본문값 타입 값 타입(Value Type)이란 스택에 할당되며 변수가 직접 값을 가지는 형식을 의미한다. 일반적으로 크기가 작고 길이가 일정한 값을 저장하며, 선언하는 즉시 기억 장소에 할당되어 바로 사용할 수 있다. 또한 값 타입은 클래스의 멤버나 메서드의 지역 변수로 선언될 수 있으며, 다른 언어들과 마찬가지로 자료형과 이름으로 ..

Language/C# 2024.08.06

[C#] C# 개요 및 입출력

개요C# 개요개요   C#은 Microsoft가 개발한 현대적이고 강력한 객체지향 프로그래밍 언어로, 다양한 응용 프로그램을 개발하는 데 사용된다. C#은 .NET Framework와 .NET Core(현재는 .NET 5+로 통합됨)에서 주로 사용되며, 가비지 컬렉션 기능을 내장하여 메모리 관리를 자동으로 수행한다. 다음은 C#의 주요 특징이다. 완전한 객체지향 언어C#은 클래스와 객체를 중심으로 설계된 완전한 객체지향 언어상속, 다형성, 캡슐화 등의 객체지향 프로그래밍의 핵심 개념을 지원 가비지 컬렉션C#은 가비지 컬렉션을 통해 불필요한 메모리를 자동으로 해제개발자가 직접 메모리를 관리할 필요가 없어 메모리 누수를 줄일 수 있음 안전한 코드포인터를 기본적으로 제공하지 않으며, 안전하지 않은 코드 영역(..

Language/C# 2024.08.05

[C# Program] Json 계층 구조 출력 프로그램

개요 C#에서 JSON 파일을 파싱할 때 보통 각 계층을 클래스로 만들어 HAS-A 관계로 포함시키는 것이다. 개발자 입장에서 JSON 파일을 열어본 후, 해당 구조를 일일이 파악해서 클래스로 만드는 것이 여간 귀찮은 게 아니다. 그래서 JSON 파일을 넣으면 자동으로 계층을 보기 좋게 출력 해주는 프로그램을 만들어 봤다. 추후엔 이 로직을 바탕으로 자동으로 클래스를 생성해주는 프로그램을 만들 수 있지 않을까 라는 생각도 해본다.본문사용법 (exe 파일 활용)   JsonParser.msi 파일을 다운받은 뒤, 해당 프로그램을 설치하고 JsonParse.exe 파일을 실행시키면 다음과 같은 화면이 뜰 것이다. 여기서 Select JSON File을 선택하자.   다음과 같이 파일 탐색기가 뜰 것인데, 파..

Program 2024.07.12

[개발] 배포 파일 만들기 with Visual Studio 2015

배포 파일 생성개요  이번 시간에는 자신이 만든 프로그램을 .msi 파일로 설치할 수 있게 배포하는 방법에 대해 배워보도록 하겠다. 필자가 사용하는 visual studio 2015를 기준으로 설명할 것이며, 버전이 달라도 Visual Studio Installer를 사용한다는 점은 변함이 없으니, 다른 버전을 사용하더라도 참고하면 좋을 것 같다.본문과정  먼저 Visual Studio 2015 Installer Project를 설치해야 한다. VS 2015 기준, 도구(Tools) → 확장 및 업데이트(Extension and Update)를 눌러 다음과 같은 화면을 띄우고, 온라인 카테고리에서 Visual Studio Installer를 검색한 후 설치하자.   설치가 완료됐으면, 배포할 프로젝트를 ..

Develope 2024.07.11

[C#] WinForm Console 띄우기

WinForm Console개요  WinForm은 기본적으로 콘솔 창을 제공하지 않는다. 하지만, 개발을 진행하면 디버깅 목적으로 특정 값을 출력할 때가 많은데 이때마다 컨트롤러에 디버깅 목적의 텍스트를 넣기엔 너무 번거롭다. 따라서 이번 시간에는 간단하게 WinForm 개발을 진행할 때 콘솔 창을 어떻게 띄우는지 알아보도록 하자.본문방법1 - WinAPI 활용  kernel32.dll은 윈도우 운영 체제의 핵심 시스템 파일 중 하나로, 다양한 시스템 레벨의 함수를 제공한다. 이 DLL은 주로 메모리 관리, 파일 입출력, 프로세스 및 스레드 관리, 콘솔 입출력 등과 같은 저수준 작업을 수행하는 함수들을 포함하고 있다.    kernel32.dll 파일 내에 정의되어 있는 함수들을 살펴보면, AllocCo..

Language/C# 2024.07.10

[C#] JSON 파싱 및 DLL 배포(1)

JSON 파싱개요  이전 게시글에선 nlohmann의 json.hpp를 이용해 JSON 파일을 파싱하는 방법을 다루었다. 이번에는 C#에서 제공하는 System.Text.Json 라이브러리를 사용하여 JSON 파일을 파싱하고, 해당 구조를 클래스로 묶어 DLL 파일로 배포하는 방법을 알아보겠다. JSON에 대한 내용은 해당 링크에 간략하게 설명해뒀으니, 해당 게시글을 읽기 전 필수적인 정보(키와 값의 개념) 정도만 확인하고 오자.본문JSON 파일 파싱  C# 에서는 Nuget 패키지 관리자를 통해 Json 파일을 파싱하는 라이브러리를 임포트할 수 있다. 이때 Newtonsoft.Json를 임포트하는 방법이 있고, System.Text.Json을 임포트하는 방법이 있다. 필자는 Visual Studio 2..

Language/C# 2024.07.09

[C#] 반응형 GUI

Responsive GUI개요  1892 x 1030 크기의 프로그램을 개발하고 있다고 가정해 보자. 만약 해당 프로그램을 실행하는 환경이 변화, 이를테면 디스플레이 배율이 변동하면 설계한 UI의 밸런스가 깨질 수 있다. 이러한 변화를 반영하여 프로그램을 개발하려면 반응형 GUI가 필요하다. 반응형 GUI는 앞서 언급한 환경에 따라 사용자 인터페이스가 자동으로 조절되는 디자인 룰을 의미한다. 이를 C# Winform에서 어떻게 구현할지 알아보는 시간을 가지도록 해보자.본문원인 분석  다음과 같이 1900 x 1050 크기의 프로그램을 Full HD(1920 x 1080, 텍스트 배율 100%) 환경에서 실행시키면 별 이상 없이 동작한다. 하지만 텍스트 배율을 125%로 변경하면 어떻게 될까?   텍스트 ..

Language/C# 2024.07.07