목차
- 데이터형
- 변환
- 표준입력
- 사용자 지정형
- 값 형식과 참조 형식
- 정리
오늘은 데이터형 배우게 되었다. 데이터 형은 코딩을 하는데 있어서 가장 먼저 배워야 되는 항목이라고 한다.
기본 데이터형
C#의 데이터형 object 로 부터 파생(상속)된 객체
C 혹은 C++ 에서의 자료형은 int(4bite)를 사용하게 되면 메모리를 확보하는 1:1로 직결되는 개점, 선언을 통해 메모리 정의 int a;
C#은 매소드, 변수가 존재해서 데이터형을 다른 용도로도 활용 될 수 있다.
뭔말인지 모르겠다. object 는 객체를 선언하기 위한 하나의 클레스다.
C#은 기존것들보다 더 넓은 개념의 데이터형을 가지고 있다. 로 이해하면 된다고 한다.
System.Object == object
데이터형은 CTS에서 정의된 객체이다. CTS는 또 뭔지 모르겠다. 검색을 해보니 Common Type System(공통 형 시스템)이라고 한다. 각기 다른 언어로 코딩한 것들이 닷넷 기반에서 호환성을 유지하며 상호 운영성을 보장하며 실행될 수 있도록 만드는것이라고 한다. 뭔가 쓰기 쉽게 만들어 논거인듯 하다. 이정도만 알아둬야 겠다.
정수형
bool : true. false System.Boolean, 1byte
char : System.Char, 2byte, 유니코드로 표현
byte : System.Byte, 1byte
sbyte : System.SByte, 1byte, s는 음(signed)의 부호를 뜻함 (아..그렇구나)
short : System.Int16, 2byte
ushort: System.UInt16, 2byte, u 는 Unsigned 양의 값을 저장하는 데이터 형
int : System.Int32, 4byte
uint : System.UInt32, 4byte
long : System.Int64, 8byte
ulong : System.UInt64, 8byte
실수형
float : System.Single, 4byte
double : System.Double, 8byte
decimal : System.Decimal, 16byte
문자열형
string : System.String
C나 C++에서는 문자를 나열해서(메모리에 순차적으로 저장) = 배열, 포인터를 사용
대신에 C#에는 이걸 귀찮지 않게 데이터 형으로 제공
bool형
true, false만 출력이 가능하고 그외의 값은 사용이 안됨(0, 1로 대체할 수 없다)
// 클래스의 정적변수 bool 형의 기본 값과 지역 bool 변수 값을 출력
class Program
{
static bool BoolVar;
static void Main(string[] args)
{
bool LocalBoolVar = true;
Console.WriteLine("{0} {1}", BoolVar, LocalBoolVar);
}
}
char 형
유니코드로 되어 있고, 암시적인 값 변환을 한다.
유니코드, 아스키코드가 뭔지 모르겠다
// 문자 상수 7을 int 형으로 변환하고 1을 더한 결과를 출력
class Program
{
static void Main(string[] args)
{
char Mun = '7';
int Num = Mun;
Num = Num + 1;
Console.WriteLine("Mun = {0} 문자상수값 = {1} 유니코드문자 = {2} ", (int)Mun, Num, (char)Num);
Mun = (char)Num;
Console.WriteLine(Mun);
}
}
byte, sbyte 형
byte : 부호 없는 0~255
sbyte : -128~127 (singed)
// byte 형 두 값을 더하고 그 값을 int형 변수에 대입하여 출력
class Program
{
static void Main(string[] args)
{
int Result;
byte x = 1, y = 2;
Result = x + y;
Console.WriteLine(Result);
}
}
short, ushort 형 (2byte)
short : -23768 ~23767
ushort : 0~ 65535 (unsigned)
// short 형의 유요 범위 값을 출력
class Program
{
static void Main(string[] args)
{
Console.WriteLine("{0} ~ {1}", short.MinValue, short.MaxValue);
}
}
int, uint 형, float형
int : -2,147,483,648 ~ 2,147,483,648
uint : 0~ 4,294,967,295
float : 소수점 뒤에 f, 없으면 double형
string 형
C, C++ 에 비해 처리가 편해짐
\가 포함된 경우 앞에 @를 붙이거나 \\ 두개를 써서 표현
// 두 문자열을 합친 후에 문자열과 다섯번째 문자를 출력
// 문자열의 문자 개수를 Length로 확인
// 백스페이스가 있는 문자열을 출력
class Program
{
static void Main(string[] args)
{
string str1 = "Hello ";
string str2 = "World!";
string str3 = str1 + str2;
string str4 = "program" + "ming";
Console.WriteLine("{0} {1}", str3, str4);
Console.WriteLine(str3[4]);
if(str3 == "Hello World!")
{
Console.WriteLine("같음");
}
else
{
Console.WriteLine("다름");
}
string str5 = "Hello World!";
Console.WriteLine("문자 개수 : {0}", str5.Length);
string str6 = "C:\\temp\\text.txt";
string str7 = @"C:\temp\text.txt";
Console.WriteLine("{0} {1}", str6, str7);
}
}
var 형(암시적 데이터형)
var은 자바스크립트에서 자주 보던 건데 java 에서 가져온 데이터형
대입되는 데이터에 따라 데이터형을 결정
var를 사용할 수 없는 예
(1) null 값 초기화, 매개 변수로는 사용 못함(함수에 값을 대입, 복사할때)
(2) 지역변수로만 사용하고 클래스 멤버로는 사용 못함(? 몬솔)
(3) 연속적으로 초기화 하는 경우 사용 불가
// 데이터형이 분명한 var형을 선언한 후 초기화 > 두값을 더한 결과를 출력
class Program
{
static void Main(string[] args)
{
var value1 = 3.14f;
float value2 = 10.12f;
float sum = value1 + value2;
Console.WriteLine("{0} {1:f1} {2}", value1, value2, sum);
// {1:f1} 1의 소수점 1자리까지 출력
}
}
nullable 형
null을 허용하지 않는 데이터형 (= 기본 데이터형)이 null 값을 허용
형식 : 데이터형? 변수명;
int? Var1; // int 값 외에 null 도 저장
bool? Var2 = null; // true, false, null
.HasValue // true, false(null)
.Value // 읽기 전용
// nullable 형을 선언하고 판독
class Program
{
static void Main(string[] args)
{
int? Num1 = null;
if (Num1.HasValue)
Console.WriteLine("올바른 값");
else
Console.WriteLine("null 값 ");
Console.WriteLine("null : {0}", Num1);
}
}
'공부 하기' 카테고리의 다른 글
C#프로그래밍 강좌 따라가기 | 데이터형 (5) - 값 형식과 참조 형식 & 데이터형 정리 (0) | 2018.09.02 |
---|---|
C#프로그래밍 강좌 따라가기 | 데이터형 (4) - 사용자 지정형 (0) | 2018.08.30 |
C#프로그래밍 강좌 따라가기 | 데이터형 (2) - 데이터 변환 (0) | 2018.08.28 |
C#프로그래밍 강좌 따라가기 | 데이터형 (3) - 표준입력 (0) | 2018.08.27 |
C#프로그래밍 강좌 따라가기 | Hello World!! (0) | 2018.08.16 |