25.09.26 개발일지 / C# 1(1) (Chapter02~Chapter03)

2025. 11. 11. 10:24·LMS 7/개발일지

Chapte02. 처음 만드는 C# 프로그램

1. 새 프로젝트 생성

2. 구조

 

▲ 코드 편집기

▲ 솔루션 탐색기

using System;
using static System.Console;

namespace Hello
{
    class MainApp
    {
        // 프로그램 실행이 시작되는 곳
        static void Main(string[] args)
        {
            if (args.Length == 0)
            {
                Console.WriteLine("사용법 : Hello.exe <이름>");
                return;
            }
            WriteLine("Hello, {0}!", args[0]);
        }
    }
}

▲ 솔루션 탐색기

3. 빌드(실행파일 확인하기)

▲ 빌드 후 위와 같은 폴더를 열기

▲ 실행파일의 경로는 bin\Debug\net9.0 에 있음

4. 실행

▲ 실행파일이 있는 경로로 이동

> cd C:\testC#\Hello\Hello\bin\Debug\net9.0

▲ 실행


Chapter03. 데이터 보관하기

더보기

1. 값 형식 vs 참조 형식

1) 값 형식

> 변수가 값을 담는 데이터 형식

> 스택(stack)과 연관됨

2) 참조 형식

> 변수가 값이 있는 곳의 위치를 담는 데이터 형식

> 힙(Heap)과 연관됨(스택은 참조형식으로 연관있음)

> 힙에 "실제 값"을 저장, 스택에는 "그 값을 참조하는 위치"를 저장

2.1) 가비지 컬렉터(Garbage Collector)

> 힙에 더 이상 사용하지 않은 객체를 자동으로 수거해가는 CLR 도구

> 스택은 블록이 끝나며 사라지고, "실제 값"이 저장된 힙에 내용들은 가비지 컬렉터가 수거해 감

 

2. decimal(소수)

> decimal은 부동 소수점 형식(float, double)의 한 종류로써 16바이트의 크기를 가져 매우 정밀하게 소수점을 나타낼 수 있는 데이터

using System;

namespace FloatingPoint
{
    class MainApp
    {
        static void Main(string[] args)
        {
            float a = 3.1415_9265_3589_7932_3846_2643_3832_79f;
            Console.WriteLine(a);

            double b = 3.1415_9265_3589_7932_3846_2643_3832_79;
            Console.WriteLine(b);

            decimal c = 3.1415_9265_3589_7932_3846_2643_3832_79m;
            Console.WriteLine(c);
        }
    }
}

 

3. String(문자열)

> String은 문자열 형식으로써 데이터의 크기가 따로 정해져 있지 않는 데이터

1) 일반적 사용

using System;

namespace String
{
    class MainApp
    {
        static void Main(string[] args)
        {
            string str = "Hello, World!";
            string str2 = "My name is myeonjin.";

            Console.WriteLine(str);
            Console.WriteLine(str2);
        }
    }
}

2) 줄바꿈 사용

using System;

namespace String
{
    class MainApp
    {
        static void Main(string[] args)
        {
            string multiline = "첫 번째 줄\n두 번째 줄\n세 번째 줄"; // 전통적
            string multiline2 = """ // 새로운 방식
                첫 번째 줄
                두 번째 줄
                세 번째 줄
                """;

            Console.WriteLine(multiline);
            Console.WriteLine();
            Console.WriteLine(multiline2);
        }
    }
}

 

4. Object(만능)

> int, long, char 등 모든 자료형을 담을 수 있는 특별한 데이터

> 참조 형식임

using System;

namespace Object
{
    class Program
    {
        static void Main(string[] args)
        {
            object num = 123; // 정수
            object decimalNum = 3.141592653589793238462643383279m; // 소수
            object bo_ol = true; // 불
            object text = "Hello, World!"; // 문자열

            Console.WriteLine(num);
            Console.WriteLine(decimalNum);
            Console.WriteLine(bo_ol);
            Console.WriteLine(text);
        }
    }
}

 

4.1 박싱

> 변수는 스택에, 실제 값은 박싱(Boxing)하여 힙에 저장하고 스택에 있는 변수가 힙에 있는 실제 값을 참조하는 형태를 만드는 것

 

5. 형 변환

1) Parse()

> 문자열을 숫자로, 문자열을 부동 소수형으로 변환할 때 사용하는 메서드

> 정수형과 부동 소수형 모두 존재하는 메서드임

int a = int.Parse("12345"); // 문자열 "12345"를 정수 12345로 변환
float b = float.Parse("123.45"); // 문자열 "123.45"를 부동소수 123.45로 변환
 

2) ToString()

> 숫자를 문자열로, 부동 소수형을 문자열로 변환할 때 사용하는 메서드

> 위와 같음

int c = 12345;
string d = c.ToString(); // 정수 12345를 문자열 "12345"로 변환

float e = 123.45;
string f = e.ToString(); // 부동 소수 123.45를 문자열 "123.45"로 변환

 

6. 열거형(enum)

> 기본적으로 상수이므로 한번 정의 후에는 변경할 수 없음

1) 형태

enum 열거형 : 기반자료형 {상수1, 상수2, 상수,3 ... } // 기반자료형을 정의하지 않은 경우는 int로 설정됨
 
2) 사용
using System;

namespace Enum
{
    class MainApp
    {
        enum DialogResult { YES, NO, CANCEL, CONFIRM, OK }
        static void Main(string[] args)
        {
            Console.WriteLine((int)DialogResult.YES);
            Console.WriteLine((int)DialogResult.NO);
            Console.WriteLine((int)DialogResult.CANCEL);
            Console.WriteLine((int)DialogResult.CONFIRM);
            Console.WriteLine((int)DialogResult.OK);
        }
    }
}

> 기반자료형을 정의하지 않아 정수형이 기본으로 사용되었고, YES부터 0, NO는 1 ... 로 정의하여 출력된 것을 볼 수 있다.

> 결국 열거형의 사용 목적은 성질이 비슷한 상수들을 중복없이 정의하기 위함.

 

7. Nullable

> 어떤 값도 가지지 않을 수 있는, 비어있는 변수를 만들 때 사용되는 키워드

1) 사용방법

> ? 를 쓴다

// 데이터형 ? 변수명;
int? a = null;
float? b = null;
double? c = null;

2) HasValue

> Nullable 형식의 변수가 값을 가지는지, 아닌지를 나타내기 위한 속성

int? a = null;
Console.WriteLine(a.HasValue); // False, 변수 a가 값을 가지지 않으므로

a = 37;
Console.WriteLine(a.HasValue); // True, 변수 a가 값을 가지므로

3) Value

> Nullable 형식의 값을 출력하기 위한 속성

int? a = null;
a = 37;
Console.WriteLine(a.Value); // 37 출력

 

8. var

> 모든 형식을 대신해줄 수 있는 키워드

> 컴파일 타임에서 값에 맞는 형식으로 자동으로 변환해준다

var a = 10; // 정수형 >> int a = 10;
var b = 3.141592; // 부동소수형 >> float b = 3.141592;
var c = "안녕하세요?" // 문자열형 >> string c = "안녕하세요?"
var d = new int[] {10, 20, 30}; // 배열형 >> int d = new int[] {10, 20, 30}

※ object형과의 차이점

> object는 참조형 데이터임. CLR이 실제 값을 박싱(boxing)하여 힙(Heap)에, 위치를 스택(stack)에 저장하는 형식인 반면, var은 컴파일 타임에서 실제 자료형으로 변환하기 때문에 CLR 입장에서는 실제 자료형으로 인식하게 됨.

 

 

'LMS 7 > 개발일지' 카테고리의 다른 글

25.09.28 개발일지 / C# 2(2) (Chapter09, Chapter10)  (0) 2025.11.11
25.09.27 개발일지 / C# 2(1) (Chapter07, Chapter08)  (0) 2025.11.11
25.09.25 개발일지  (0) 2025.11.04
25.09.24 개발일지 / Windows Git  (0) 2025.11.04
25.09.23 개발일지  (0) 2025.11.04
'LMS 7/개발일지' 카테고리의 다른 글
  • 25.09.28 개발일지 / C# 2(2) (Chapter09, Chapter10)
  • 25.09.27 개발일지 / C# 2(1) (Chapter07, Chapter08)
  • 25.09.25 개발일지
  • 25.09.24 개발일지 / Windows Git
m_Dev
m_Dev
  • m_Dev
    m_Dev
    m_Dev
  • 전체
    오늘
    어제
    • 분류 전체보기
      • MAIN STUDY
        • 정보보안
        • 빅데이터
        • 정보처리
        • 컴퓨터 구조
        • 기타
      • JOB
        • Study
        • Project
      • LMS 7
        • 개발일지
      • FRAMEWORK
        • Qt
        • MFC
        • Winform
        • WPF
        • MAUI
      • NETWORK
        • Study
        • Assignment
      • PYTHON
        • Set
        • Study
        • Assignment
        • Project
      • C
        • Set
        • Study
        • Assignment
        • Project
      • C++
        • Set
        • Study
        • Assignment
        • Project
      • C#
        • Set
        • Study
        • Assignment
        • Project
      • DATABASE
        • MySQL
        • SQLite
      • IDE
        • VisualStudioCode
        • VisualStudio
        • Pycharm
        • Colab
      • 기타
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.4
m_Dev
25.09.26 개발일지 / C# 1(1) (Chapter02~Chapter03)
상단으로

티스토리툴바