ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [C# 기본] 2. 데이터형
    C#/강의 | Lecture 2018. 11. 28. 15:57

    1. 기본 데이터형

    1-1. C#의 데이터형은 object로부터 파생된 객체

    - int a; // a는 변수 이면서 int형 객체이므로 int와 관련된 메서드, 변수 사용 가능


    1-2. object는 System.Object를 말함


    1-3. 정수형 : bool, int, long, short, char, byte

    - int == System.Int32, 4byte

    - long == System.Int64, 8byte

    - char == System.Char, 2byte (유니코드)

    - bool == System.Boolean , C/C++과 다르게 true, false 키워드로 할당되고, 1byte

    - byte == System.Byte, 1byte


    1-4. 실수형 : float, double

    - float == System.Single, 4byte

    - double == System.Double, 8byte


    1-5. 문자열형 : string == System.String

    - '+' operator로 문자열 연결 가능

    - '==' operator로 문장려 비교 가능

    - 대괄호를 이용해서 인덱스 접근 가능






    2. 암시적 데이터형 var

    2-1. 대입되는 데이터에 따라 데이터형 결정


    2-2. null 값 초기화 및 매개변수로는 사용 하지 못함


    2-3. var는 지역변수로만 사용, 클래스 멤버로는 사용 못함






    3. null 값을 허용하는 nullable형

    3-1. null을 허용하지 않는 데이터형이 null값을 허용하게 함


    3-2. 사용 형식은 데이터형? 변수명;

    - int? var1;

    - bool? var2; // true, false, null


    3-3. HasValue라는 속성을 이용해서 null인지 아닌지 확인 가능






    4. 데이터 변환

    4-1. 기본 데이터형을 문자열로 변환할때는 ToString() 메서드 사용


    4-2. 문자열을 기본 데이터형으로 변환할때는 Parse() 메서드와 Convert 클래스 사용

    - float value1 = float.Parse("3.14"); // Parse() 메서드

    - int value2 = Convert.ToInt32("100"); // Convert 클래스






    5. 박싱(boxing)과 언박싱(unboxing)

    5-1. 데이터 형은 object로 부터 상속받아서 만들어짐


    5-2. 박싱(boxing)은 데이터 형을 최상위 object 형으로 변환하여 힙메모리에 저장

    - 메모리 공유하지 않음

    - int m = 123;

      object obj = m;


    5-3. 언박싱(unboxing)은 힙에 저장된 형식을 다시 원래의 형식으로 변환

    - int n = (int)obj;






    6. 표준 입력

    6-1. 한 문자 정보를 입력 받는 메서드로 Console.ReadKey()

    - static 멤버함수로 선언되어있음 (객체 생성없이 바로 사용가능)


    6-2. 입력된 키를 ConsoleKeyInfo.Key로 확인 가능


    6-3. 엔터키가 눌려질때까지 문자열을 입력받는 Console.ReadLine() 메서드

    - 입력 받은 문자열을 숫자로 활용할때는 Convert.ToInt32 사용






    7. 사용자 지정형 - 구조체(struct)

    7-1. 구조체의 형식은 아래와 같음

    - public struct 구조체명

      {

        public static int age = 12; // 외부에서 선언 없이 접근 가능

        public const float PI = 3.14f; // 외부에서 선언 없이 접근 가능

        public int val; // 일반 멤버 변수는 초기화 불가능

      }


    7-2. 선언 형식은 아래와 같음 (구조체명이 MyStruct라 가정)

    - MyStruct TestStruct1;

    - MyStruct TestStruct2 = new MyStruct(); // 기본 생성자 호출

    - MyStruct TestStruct3 = new MyStruct(10); // 매개변수가 있는 생성자가 있을 경우


    7-3. 구조체가 new로 생성 될 경우 멤버 변수는 생성과 동시에 모두 0으로 초기화

    - new로 생성되지 않을 경우 멤버 변수는 값을 지정해주어야 함


    7-4. 구조체에 선언된 const, static 변수만 초기화 가능

    - 구조체에 선언된 const, static 변수는 외부에서 구조체 변수 선언없이 접근 가능


    7-5. 구조체 안에 선언할 수 있는 생성자는 매개변수가 반드시 존재

    - 매개 변수가 없는 기본 생성자는 자체적으로 존재


    7-6. 구조체를 같은 구조체에 대입(=)하게 되면 값이 복사


    7-7. 구조체는 값 형식이고, 클래스는 참조 형식 (대입 연산자에 대해)

    - MyStruct Test1 = new MyStruct();

      MyStruct Test2 = Test1; // 값이 복사되고, 서로 다른 구조체가 됨

    - MyClass Test3 = new MyClass();

      MyClass Test4 = Test3; // 참조가 되는 형태로 Test4는 Test3의 별명으로 설정


    7-8. 구조체는 구조체 또는 클래스에 상속할 수 없음

    - C++의 구조체는 상속이 가능하지만 가능하면 쓰지 않는 것이 좋음

    - C#에서는 구조체의 상속을 제한


    7-9. 구조체는 인터페이스를 상속하여 메서드 구현 가능






    8. 값 형식과 참조 형식

    8-1. 선언은 초기값을 정해주어야 하며, 생성(new)은 0으로 초기화 됨

    - int nVal1 = 12; // 선언

      int nVal2 = new int(); // 생성, nVal2는 0으로 초기화


    8-2. 참조 형식은 한 객체를 참조형 변수가 사용 할 때, 참조형에 의해 내용이 바뀌면 객체에 영향을 미침

    - 대입 연산자에 의해 참조가 되는 형태는 class, interface, delegate, 배열

    - 객체와 참조형 사이의 대입은 객체의 메모리 주소가 복사


    8-3. 값 형식은 기본 데이터형, struct, enum

    'C# > 강의 | Lecture' 카테고리의 다른 글

    [C# 기본] 6. 클래스  (0) 2018.11.29
    [C# 기본] 5. 파일입출력  (0) 2018.11.29
    [C# 기본] 4. 배열  (0) 2018.11.29
    [C# 기본] 3. 기본 문법  (0) 2018.11.29
    [C# 기본] 1. 개요  (0) 2018.11.27

    댓글

Designed by Tistory.