본문 바로가기

Programming Language/C#

[C#] 데이터 타입

1. 기본 데이터 타입 (Primitive Data Types)

int : 32비트 부호 있는 정수


int integerValue = 42;

long : 64비트 부호 있는 정수


long longValue = 123435452435534;

flot : 32비트 부동 소수점


  • 3.14는 기본적으로 doble 타입으로 간주된다. 따라서 리터럴 값 뒤에 f 나 F 를 붙여 명시적으로 float 으로 해석하도록 알려줘야 한다.
  • f 를 생략할시 컴파일러는 이 값을 ‘doble’ 로 간주하고 ‘float’ 타입에 대입 시 형변환 오류가 발생할 수 있다.
flot flotValue = 3.14f;

double : 64비트 부동 소수점(더 큰 정밀도를 제공한다.)


doble dobleValue = 3.14;

bool : 불리언 (참 또는 거짓)


bool boolValue = true;

char : 16비트 유니코드 문자(단일문자)


char charValue = 'A';

string : 문자열


string stringValue = "Hello, C#!";
// 1. 문자열(string) 변수
  string s1 = "c#";
  string s2 = "programing";

  // 문자(char) 변수 (단일문자)
  char c1 = 'a';
  char c2 = 'b';
  Console.WriteLine(c1 + c2);

  // 문자열 결합
  string s3 = s1 + " " + s2;
  Console.WriteLine(s3);

  // 부분문자열 발췌
  string s3subString = s3.Substring(1, 5);
  Console.WriteLine("Substring: {0}" + s3subString);

  // 2. 문자배열
  string s = "C# Studies";

  // 문자열을 배열인덱스로 한문자 엑세스
  for (int i = 0; i < s.Length; i++)
  {
      Console.WriteLine("index : {0} , Character: {1}",i , s[i]);
  }

  // 문자열을 문자배열로 반환 
  string str = "Hello";
  char[] charArray = str.ToCharArray();

  // 문자열을 문자 배열로 변환 후 각 문자 출력
  for (int i = 0; i < charArray.Length; i++)
  {
      Console.WriteLine(charArray[i]);
      // 문자 배열로 반환 후 각 문자를 같은 줄에 출력
      //Console.Write(charArray[i]);
  }

  // 문자배열을 문자열로 반환
  char[] charArray2 = {'a', 'b', 'c' };
  s = new string(charArray2);
  Console.WriteLine(s);

  // 문자 연산
  char d1 = 'A';
  char d2 = (char)(d1 + 3);
  Console.WriteLine("문자연산" + d2); // D

열거형 (Enum): 서로 관련된 상수(변하지 않는 값) 들의 집합을 나타내는 데이터 형식


enum Days
{
    Sunday,
    Monday,
    Tuesday,
    Wednesday,
    Thursday,
    Friday,
    Saturday
}

Days today = Days.Wednesday;

Casting , Flag 예제


  • Casting(전환) : 한 타입을 다른 타입으로 변경하는 것
  • Flag : 해당 타입 혹은 멤버가 어떤 특성을 갖고 있는 지 나타내게 된다.
namespace Enum
{
    internal class Program
    {
        // 1. Enum, Casting 
        enum City
        {
            Seoul, // 0
            Deajun, // 1
            Busan = 5, // 5
            Jeju = 10, // 10
        };
        // 2. Flag
        [Flags]
        enum Border
        {
            None = 0,
            Top = 1,
            Right = 2,
            Bottom = 4,
            Left = 8,
        }
        static void Main(string[] args)
        {
            // 1. Enum 사용, Casting
            City myCity;

                // enum 타입에 값을 대입하는 방법
                myCity = City.Seoul;

                // enum을 int로 변환(Casting) 하는 방법
                // (int) 를 앞에 지정.
                int cityValue = (int)myCity;
                Console.WriteLine(cityValue);

                if(myCity == City.Seoul)
                {
                    Console.WriteLine("Welcome to Seoul");
                }

            // 2. Enum Flag
                // or 연산자로 다중 플래그 할당
                Border b = Border.Top | Border.Bottom; // 1,4

                // & 연산자로 플래그 체크 (Top 플래그가 설정되어 있는지 여부 체크)
                if((b & Border.Top) != 0) {
                    // hasFlag() 를 이용해 플래그 체크
                    if (b.HasFlag(Border.Bottom))
                    {
                        // 해당 플래그 멤버명들을 문자열로 보여준다. "Top, Bottom"
                        // [Flag] 가 없다면 1+4 즉 5를 출력한다.
                        Console.WriteLine(b.ToString());
                    }
                }

        }
    }
}

2. 참조형 데이터 타입 (Reference Types)

**object : 모든 형식의 기본 클래스**


object objValue = 42;

Class : 사용자 정의 클래스


class Person
{
    public string Name { get; set; }
}

Person personObject = new Person { Name = "John" };

interface : 인터페이스


interface ILogger
{
    void Log(string message);
}

class ConsoleLogger : ILogger
{
    public void Log(string message)
    {
        Console.WriteLine(message);
    }
}

ILogger logger = new ConsoleLogger();
logger.Log("Log this message.");

delegate : 델리게이트 (대리자)


delegate void MyDelegate(string message);

class MyClass
{
    public void DisplayMessage(string message)
    {
        Console.WriteLine(message);
    }
}

MyClass myObject = new MyClass();
MyDelegate delegateInstance = myObject.DisplayMessage;
delegateInstance("Delegate example.");

Nullable 타입


int? nullableInt = null;

구조체 (Struct)


struct Point
{
    public int X;
    public int Y;
}

Point myPoint = new Point { X = 10, Y = 20 };

'Programming Language > C#' 카테고리의 다른 글

[C#] 반복문(Loop)  (0) 2023.12.27
[C#] 조건문(Conditional Statement)  (0) 2023.12.27
[C#] 연산자  (0) 2023.12.27
[C#] static void Main () 이란?  (0) 2023.12.27
[C#] Intro  (0) 2023.12.27