//배열
//int a[10]; //c++ 에서는 이렇게만...
//c++ 에서는 배열을 자료형의 집합 이라고 생각하면 되지만
//C#에서는 int와 int[]를 별도의 타입으로 생각하는 것이 낫다.
int[] aa = new int[5]; //모두 0으로 초기화 (c++에서는 쓰레기 값이 들어갔었다.)
int[] bb = new int[5] { 10, 20, 30, 40, 50 };
int[] cc = new[] { 10, 20, 30, 40, 50, 60, 70 };
int[] dd = { 1, 2, 3, 4 };
//2차원 배열
int[,] aaa = new int[3, 2]; //int[2]가 3개 있음
int[,] aaa2 = new int[3, 2] { { 1, 2 }, { 2, 3 }, { 3, 5 } }; //초기화
'공부 > C#' 카테고리의 다른 글
switch (0) | 2016.05.04 |
---|---|
사칙연산 (0) | 2016.05.04 |
데이터 타입 (0) | 2016.05.04 |
string 처리 기본 (0) | 2016.05.04 |
[잡담]C# 공부 첫날 소감 (0) | 2016.05.03 |
//데이터 타입
//c++이랑은 좀 차이가 있다.
//string
//c++에서는 기본적으로 없고 STL로 구현되어있다.
//C#에서 메모리 구조상에서 바뀌지 않는다. 새로 메모리 공간을 만든다.
//string str = string.Format("string test : {0} {1} {0}", 10, "문자");
//Console.WriteLine(str);
//int형 크기, 최소값, 최대값
//Console.WriteLine("int : {0} byte {1} ~ {2}" ,
// sizeof(int), int.MinValue, int.MaxValue); //int
Console.WriteLine("int : {0} byte {1:N} ~ {2:N}", //N 기본 숫자 포맷팅 정수 셋째 자리마다 , 소수점아래 2자리
sizeof(int), int.MinValue, int.MaxValue); //int
Console.WriteLine("uint : {0} byte {1:N} ~ {2:N}",
sizeof(uint), uint.MinValue, uint.MaxValue); //unsigned int
Console.WriteLine("long : {0} byte {1:#,#} ~ {2:#,#}", //#,#만 하면 소수점 없이 숫자 포맷 가능
sizeof(long), long.MinValue, long.MaxValue); //long
//UInt16; UInt32; UInt64; //숫자 bit짜리 int;
Console.WriteLine("decimal : {0} byte {1:#,#} ~ {2:#,#}", //#,#만 하면 소수점 없이 숫자 포맷 가능
sizeof(decimal), decimal.MinValue, decimal.MaxValue); //10진수
Console.WriteLine("byte : {0} byte {1} ~ {2}",
sizeof(byte), byte.MinValue, byte.MaxValue); //byte 0 ~ 255
Console.WriteLine("sbyte : {0} byte {1} ~ {2}",
sizeof(sbyte), sbyte.MinValue, sbyte.MaxValue); //sbyte -128 ~ 127
//char
//C#에서는 타입 체킹이 엄격하다.
//기본적으로 unicode를 사용한다.
//글자 하나를 받는 의미가 크다.
char a = '글'; //그래서 한글도 들어갈 수 있다.(c++에서는 한글은 2byte가 필요한데 char는 1byte이다.)
char b = 'a';
Console.WriteLine("char : {0} byte {1} ~ {2}",
sizeof(char), char.MinValue, char.MaxValue); //char \0 ~ 0xffff
Console.WriteLine("float : {0} byte {1} ~ {2}",
sizeof(float), float.MinValue, float.MaxValue); //float
Console.WriteLine("double : {0} byte {1} ~ {2}",
sizeof(double), double.MinValue, double.MaxValue); //double
Console.WriteLine("bool : {0} byte {1} ~ {2}",
sizeof(bool), bool.FalseString, bool.TrueString); //bool
//데이터 타입 끝
'공부 > C#' 카테고리의 다른 글
사칙연산 (0) | 2016.05.04 |
---|---|
배열 (0) | 2016.05.04 |
string 처리 기본 (0) | 2016.05.04 |
[잡담]C# 공부 첫날 소감 (0) | 2016.05.03 |
정수, 실수 출력 (0) | 2016.05.03 |
string 처리 기본
//안좋은 string 더하는 방식 - 메모리 낭비가 심함
string str1 = "Hello";
string str2 = "World";
Console.WriteLine(str1 + " " + str2);
//좋은 string 더하는 방식
//StringBuilder builder = new StringBuilder(); //C#에서 무조건 주소만 존재한다. class는 new 안해주면 생성되지 않는다.
StringBuilder builder = new StringBuilder(10); //공간을 잡아주는것이 좋다. AppendFormat 기본 잡아준 공간을 넘어가면 다시 생성되어 공간 확보하므로 메모리 낭비가 될수 있다.
builder.AppendFormat(str1);
builder.AppendFormat(" ");
builder.AppendFormat(str2);
Console.WriteLine(builder.ToString()); //웬만한 타입은 String으로 변환 가능하다
Console.WriteLine(builder); //.ToString() 생략 가능
builder.Remove(1, 2); //1번 인덱스 부터 2개 글자 제거
Console.WriteLine(builder);
//글자 뒤에 다시 타입별로 추가
builder.AppendFormat(" {0} {1}", a, str1); //0은 int , str1은 string
Console.WriteLine(builder);
Console.WriteLine("1을 입력하시오");
string read = Console.ReadLine();
Console.WriteLine("입력 받은 것 : " + read);//안좋은 방식이지만 사람이 쓰기엔 편하다.
//비교
//if( read == "1" )
//string 값 간의 비교는 연산이 너무 많아 진다.
//숫자라고 한다면 int는 값비교가 한번에 된다.
//어지간해선 string간의 비교는 하지 말자.
//들어온 숫자 string을 int형으로 변환
int readNum = Int32.Parse(read);
//숫자가 아닌것에 대해 예외처리 안되어있다. 나중에 다시 알아 보자.
//숫자가 아니면 터진다.나중에 다시 알아 보자.
//C#은 기본적으로 Unicode이므로 특수문자에 제약이 없다.
if(readNum == 1)
{
Console.WriteLine("● 1이 입력 되었습니다.");
}
else
{
Console.WriteLine("◐ 1이 아닙니다.");
}