외규장각 도서 환수 모금 캠페인

C#의 Data Types

Interesting/C# 2008. 11. 6. 16:52
Value Types
일반적으로 3가지의 타입이 있다.
1. Built-in Type(내장형 타입)
2. User-defined Types(사용자 정의 타입)
3. Enumerations(열거형)

-----------------------------------------------------------------------------------------------------------
Built-in Value Types
 sbyte  1 byte
 byte  1 byte 
 short  2 byte
 int  4 byte
 uint  4 byte
 long  8 byte
 float  3 byte
 double  8 byte
 decimal  16 byte

other Value Types
 char  2 byte 
 bool  4 byte
 date  8 byte

위에서 언급한 Value Type들은 직접 직접 데이터를 가지며 변수에는 원본 데이터에 대한 복사본이 저장되며 한 변수에 대한 연산이 다른 변수에 영향을 미칠 수 없다는 특징이 있습니다. 참고로 C#은 대소문자를 구분해줍니다.

Value Types을 정의하는 방법은 다음과 같습니다.
1. Built-in Type
bool b = false;
다른 언어와 마찬가지로 변수가 직접 데이터를 가지기 때문에 위와 같이 정의 해줍니다.

2. User-defined Type
유저정의 타입은 표현을 할때 일반적으로 구조체를 사용한다. 여기 소스를 보면 쉽게이해가 갈 것이다.

using System;
using System.Collections.Generic;
using System.Text;

namespace User_defined_types
{
    struct Int_user_defined
    {
        int number1, number2, number3;
        public Int_user_defined(int _number1, int _number2, int _number3)
        {
            number1 = _number1;
            number2 = _number2;
            number3 = _number3;
        }
        public int Value(int i)
        {
            if (i == 1)
                return number1;
            else if (i == 2)
                return number2;
            else if (i == 3)
                return number3;
            return 0;
        }
        public override string ToString()
        {
            return base.ToString();
        }
    }
    class Program
    {
        static void Main(string[] args)
        {
            Int_user_defined test1 = new Int_user_defined(1, 10, 100);
            Console.WriteLine("number1 = {0}, number2 = {1}, number3 = {2}", test1.Value(1),test1.Value(2),test1.Value(3));
        }
    }
}





3. Enumerations
열거형들은 고정된 값들을 가지고 있습니다. 하지만 고정된 값들은 모두 하나의 연관성을 가지고 있으며 그 중에 하나만을 선택하거나 할 때 사용하면 유용하게 쓰입니다.

using System;
using System.Collections.Generic;
using System.Text;

namespace enum_test
{
    enum Selection : int { Red, Green, Blue};
    class Program
    {
        static void Main(string[] args)
        {
            Selection s = Selection.Red;
            Console.WriteLine("{0}",s);
        }
    }
}




-----------------------------------------------------------------------------------------------------------
Reference Types
Reference Types은 해당 타입의 인스턴스(instance)에 대한 참조입니다. 여기서 타입의 인스턴스를 개체라고 부릅니다. 개체는 object 입니다. 일반적으로 포인터라고 불리워집니다.
Value Types은 변수의 값을 그대로 복사해오는 것이지만 Reference Type은 개체 자체를 복사해서 그가 가진 모든 것들을 복사하는 것입니다.

using System;
using System.Collections.Generic;
using System.Text;

namespace reference_types
{
    struct Numbers
    {
        public int val;
       
        public Numbers(int _val)
        {
            val = _val;
        }
        public override string ToString()
        {
            return val.ToString();
        }
    }
    class Program
    {
        static void Main(string[] args)
        {
            Numbers n1 = new Numbers(0);
            Numbers n2 = n1;
            n1.val += 1;
            n2.val += 2;
            Console.WriteLine("n1 = {0}, n2 ={1}", n1, n2);
        }
    }
}





Commom Reference Types
 System.Object
 System.String
 System.Text.StringBuilder
 System.Array
 System.IO.Stream
 System.Exception

Posted by 닉네임영역
,


사랑합니다. 편안히 잠드소서