C#

#데이터 보관하기

Barbarian developer 2024. 10. 29.

정수 형식 예제

//정수형식
using System;

namespace IntegralTypes
{
    class MainApp
    {
        static void Main(string[] args)
        {
            sbyte a = -10;
            byte b = 40;

            Console.WriteLine($"a={a}, b={b}");

            short c = -30000;
            ushort d = 60000;

            Console.WriteLine($"c={c}, d={d}");

            int e = 1000_0000;
            uint f = 3_000_0000;

            Console.WriteLine($"e={e}, f={f}");

            long g = -5000_0000_0000;
            ulong h = 200_0000_0000_0000_0000;

            Console.WriteLine($"g={g}, h={h}");
        }
    }
}

 

<실행결과>

 

$는 파이썬의 f와 비슷합니다 $'{a}'는 변수 a의 값을 사용하겠다는 의미입니다.

숫자에 쓰인 '_'는 여기서 구분자로 사용됩니다. 코드 입력시 식별하기 쉽게 하기 위함이며, 빌드시 출력되지 않습니다.

 

2진수, 10진수, 16진수 리터럴

using System;

namespace IntegerLiterals
{
    class MainApp
    {
        static void Main(string[] args)
        {
            byte a = 240;   //10진수
            Console.WriteLine($"a={a}");

            byte b = 0b1111_0000;   //2진수
            Console.WriteLine($"b={b}");

            byte c = 0XF0;  //16진수
            Console.WriteLine($"c={c}");

            uint d = 0x1234_abcd;   //16진수
            Console.WriteLine($"d={d}");
        }
    }
}

 

<실행결과>

 

문자 형식

using System;

namespace Char
{
    class MainApp
    {
        static void Main(string[] args)
        {
            char a = '안';
            char b = '녕';
            char c = '하';
            char d = '세';
            char e = '요';

            Console.Write(a);   //Console.Write() 메소드는 데이터를 출력한 후 줄을 바꾸지 않음
            Console.Write(b);   
            Console.Write(c);
            Console.Write(d);
            Console.Write(e);
            Console.WriteLine();    //Console.WriteLine() 메소드는 데이터를 출력한 후 줄을 바꿈.
        }
    }
}

 

<실행결과>

 

문자열 형식

using System;

namespace String
{
    class MainApp
    {
        static void Main(string[] args)
        {
            string a = "안녕하세요?";
            string b = "바바리안입니다.";

            Console.WriteLine(a); 
            Console.WriteLine(b);
        }
    }
}

 

<실행결과>

 

문자열 형식 2

using System;

namespace Multiline
{
    class MainApp
    {
        static void Main(string[] args)
        {
            string multiline = """
                별 하나에 추억과
                별 하나에 사랑과
                별 하나에 쓸쓸함과
                별 하나에 동경과
                별 하나에 시와
                별 하나에 어머니, 어머니
                """;
            Console.WriteLine(multiline);
        }
    }
}

 

  • """ (triple quotes)를 사용하는 이유는 다중 행 문자열을 좀 더 간편하고 가독성 좋게 작성할 수 있도록 하기 위함입니다.  
  • 긴 문자열을 여러 줄에 걸쳐 작성할 때 줄바꿈이나 들여쓰기 등을 그대로 표현할 수 있게 합니다.

object형식

 

using System;

namespace Multiline
{
    class Object
    {
        static void Main(string[] args)
        {
            object a = 123;
            object b = 3.121592653589793238462643383279m;
            object c = true;
            object d = "안녕하세요.";

            Console.WriteLine(a);
            Console.WriteLine(b);
            Console.WriteLine(c);
            Console.WriteLine(d);
        }
    }
}
  • 상속 개념이랄까요?
  • 그냥 object라는 객체는 모든 타입의 변수를 담을 수 있다라고 생각하고 넘어 가겠습니다.

박싱과 언박싱

using System;

namespace BoxingUnboxing
{
    class MainApp
    {
        static void Main(string[] args)
        {
            int a = 123;
            object b = (object)a; //a에 담긴 것을 박싱해서 heep에 저장.
            int c = (int)b; // b에 담긴 것을 언박싱해서 스택에 저장.

            Console.WriteLine(a);
            Console.WriteLine(b);
            Console.WriteLine(c);

            double x = 2.1313213;
            object y = x; //x 에 담긴 값을 박싱해서 heep에 저장
            double z = (double)y; //y에 담긴 값은 언박싱해서 스택에 저장.

            Console.WriteLine(x);
            Console.WriteLine(y);
            Console.WriteLine(z);
        }
    }
}

 

<실행결과>

 

 

문자열을 정수로, 정수를 문자열로

using System;


namespace StringNumberConversion
{
    class MainApp
    {
        static void Main(string[] args)
        {
            int a = 123;
            string b = a.ToString();
            Console.WriteLine(b);

            float c = 3.14f;
            string d = c.ToString();
            Console.WriteLine(d);

            string e = "123456";
            int f = Convert.ToInt32(e);
            Console.WriteLine(f);

            string g = "1.2345";
            float h = float.Parse(g);
            Console.WriteLine(h);
        }
    }
}

 

<실행결과>

  • 변수.ToString(); -> 문자열로 변환
  • Convert.ToInt32(변수) ->문자열을 정수형으로 변환
  • float.Parse(변수) ->실수형으로 변환.

 

상수선언

using System;
using static System.Runtime.InteropServices.JavaScript.JSType;


namespace Constant
{
    class MainApp
    {
        static void Main(string[] args)
        {
            const int MAX_INT = 2147483647;
            const int MIN_INT = -2147483648;

            Console.WriteLine(MAX_INT);
            Console.WriteLine(MIN_INT);
        }
    }
}

실행 결과 볼 필요도 없이 상수 선언은 이렇게 합니다.

 

열거형

using System;
using static System.Runtime.InteropServices.JavaScript.JSType;


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);
        }
    }
}

 

<실행결과>

 

열거형2

using System;


namespace Enum2
{
    class MainApp
    {
        enum DialogResult {YES, NO, CANCEL, CONFIRM, OK}
        static void Main(string[] args)
        {
            DialogResult result = DialogResult.YES;

            Console.WriteLine(result == DialogResult.YES);
            Console.WriteLine(result == DialogResult.NO);
            Console.WriteLine(result == DialogResult.CANCEL);
            Console.WriteLine(result == DialogResult.CONFIRM);
            Console.WriteLine(result == DialogResult.OK);
        }
    }
}

 

<실행결과>

 

Nullable 형식

Nullable 형식의 이름은 Null(비어 있는) + able(~될 수 있는), 즉 ‘비어 있는상태가될 수 있는 형식' 이라는 뜻을 나타냅니다. Nullable 형석의 변수를 선언할 때는 다음과 같이 원래의 데이터 형 식 이름 뒤에 "?'만붙여주면 됩니다.

테이터_형식? 변수_이름;

 

using System;


namespace Nullable
{
    class MainApp
    { 
        static void Main(string[] args)
        {
            int? a = null;

            Console.WriteLine(a.HasValue);
            Console.WriteLine(a != null);

            a = 3;

            Console.WriteLine(a.HasValue);
            Console.WriteLine(a != null);
            Console.WriteLine(a.Value);
        }
    }
}

 

<실행결과>

 

var 

using System;


namespace UsingVar
{
    class MainApp
    { 
        static void Main(string[] args)
        {
            var a = 20;

            Console.WriteLine("Type: {0}, Value: {1}", a.GetType(), a);

            var b = 2.1313213;
            Console.WriteLine("Type: {0}, Value: {1}", b.GetType(), b);

            var c = "Hello, world!";
            Console.WriteLine("Type: {0}, Value:{1}", c.GetType(), c);

            var d = new int[] { 10, 20, 30 };
            Console.WriteLine("Type: {0}, Value:{1}", d.GetType(), d);
            foreach (var e in d) 
                Console.WriteLine("{0} ",e);
        }
    }
}

 

<실행결과>

 

 

공용형식 시스템

 

외우고 공부할 시간 없습니다. 이런게 잇구나 하고 넘어갑시다.

 

 

문자열 안에서 찾기

using static System.Console;


namespace StringSearch
{
    class MainApp
    {
        static void Main(string[] args)
        {
            string greeting = "Good Morning";

            WriteLine(greeting);
            WriteLine();

            //IndexOf()
            WriteLine("IndexOf 'Good' : {0}", greeting.IndexOf("Good"));
            WriteLine("IndexOf 'o' : {0}", greeting.IndexOf('o'));


            //LastIndexOf()
            WriteLine("LastIdexOf 'Good' : {0}", greeting.LastIndexOf("Good"));
            WriteLine("LastIdexOf 'o' : {0}", greeting.LastIndexOf("o"));

            //StartWith()
            WriteLine("StartsWith 'Good' : {0}", greeting.StartsWith("Good"));
            WriteLine("StartsWith 'Morning'  {0}", greeting.StartsWith("Morning"));


            // EndsWith()
            WriteLine("EndsWith 'Good' : {0}", greeting.EndsWith("Good"));
            WriteLine("EndsWith 'Morning' : {0}", greeting.EndsWith("Morning"));

            // Contains()
            WriteLine("Contains 'Evening' : {0}", greeting.Contains("Evening"));
            WriteLine("Contains 'Morning' : {0}", greeting.Contains("Morning"));

            // Replace()
            WriteLine("Replaced 'Morning' with 'Evening': {0}", greeting.Replace("Morning", "Evening"));
        }
    }
}

 

<실행결과>

 

 

문자열 변형하기

using static System.Console;

namespace StringModify
{
    class MainApp
    {
        static void Main(string[] args)
        {
            WriteLine("ToLower() : '{0}'", "ABC".ToLower());
            WriteLine("ToUpper() : '{0}'", "abc".ToUpper());

            WriteLine("Insert() : '{0}'", "Happy Friday!".Insert(5, " Sunny"));
            WriteLine("Remove() : '{0}'", "I Don't Love You.".Remove(2, 6));

            WriteLine("Trim() : '{0}'", " No Spaces ".Trim());
            WriteLine("TrimStart() : '{0}'", " No Spaces ".TrimStart());
            WriteLine("TrimEnd() : '{0}'", " No Spaces ".TrimEnd());
        }
    }
}

 

<실행결과>

 

문자열 분할하기

using static System.Console;

namespace StringSlice
{
    class MainApp
    {
        static void Main(string[] args)
        {
            string greeting = "Good morning.";

            WriteLine(greeting.Substring(0, 5)); // "Good"
            WriteLine(greeting.Substring(5)); // "morning"
            WriteLine();

            string[] arr = greeting.Split(new string[] { " " }, StringSplitOptions.None);
            WriteLine("Word Count : {0}", arr.Length);

            foreach (string element in arr)
                WriteLine("{0}", element);
        }
    }

}

 

<실행결과>

 

문자열 서식 맞추기

using System;
using static System.Console;

namespace StringFormatBasic // StringFormatBasic라는 네임스페이스를 정의합니다.
{
    class MainApp // MainApp이라는 클래스를 정의합니다.
    {
        static void Main(string[] args) // 프로그램의 시작점인 Main 메서드를 정의합니다.
        {
            // fmt는 문자열 포맷을 정의한 변수입니다.
            // {0, -20}은 첫 번째 항목을 왼쪽 정렬하여 20자리 공간을 확보하고 출력합니다.
            // {1, -15}는 두 번째 항목을 왼쪽 정렬하여 15자리 공간을 확보하고 출력합니다.
            // {2, 30}은 세 번째 항목을 오른쪽 정렬하여 30자리 공간을 확보하고 출력합니다.
            string fmt = "{0,-20} {1,-15} {2,30}";

            // 각 항목의 제목을 출력합니다. "Publisher", "Author", "Title"이라는 문자열이 포맷에 맞게 출력됩니다.
            WriteLine(fmt, "Publisher", "Author", "Title");

            // 각 출판사, 저자, 제목에 대한 정보를 포맷에 맞게 출력합니다.
            WriteLine(fmt, "Marvel", "Stan Lee", "Iron Man");
            WriteLine(fmt, "Hanbit", "Sanghyun Park", "This is C#");
            WriteLine(fmt, "Prentice Hall", "K&R", "The C Programming Language");
        }
    }
}

 

<실행결과>

 

 

'C#' 카테고리의 다른 글

클래스  (0) 2024.10.30
메소드로 코드 간추리기  (0) 2024.10.30
코드의 흐름 제어하기  (1) 2024.10.30
데이터를 가공하는 연산자  (2) 2024.10.29
C# 프로그램 만들기  (0) 2024.10.29

댓글