구조체
struct 구조체명{
타입명 변수명;
타입명 변수명;
...
}
여러가지 타입의 자료형을 하나로 묶어 놓은것. 주로 상태 정보를 모아놓을때 쓰인다 ex)학생(학번, 생년월일, 이름)
구조체에 행위정보(메소드) 까지 넣을수 있게 한것이 class 이다.
예제) 학생 구조체 만들어서 값입력 후 출력해보기
C#에서 출력할 때 {0}을 {0:X}로 바꾸면 16진수로 변환되서 출력된다.
/*
학생 데이터
이름 - string
생년 - int
학번 - int
학생이 500명이면 변수선언 귀찮 -> 구조체 씀
*/
struct Student
{
public string Name;
public int Birth;
public int Num;
}
static void Main(string[] args)
{
Student st1 = new Student();
st1.Name = "홍길동";
st1.Birth = 19990107;
st1.Num = 14723331;
Console.WriteLine("이름 : {0}", st1.Name);
Console.WriteLine("생년 : {0}", st1.Birth);
Console.WriteLine("학번 : {0:X}", st1.Num); // 16진수로 바꾸기
}
배열
타입[ ] 변수명 = { 배열값 };
같은 자료형을 하나의 이름으로 묶는것. 2차원 배열 일 경우 [ , ]로 표현한다.
예제1) iMoney[20] 배열에 1000부터 4씩 증가하는 값을 입력받고 foreach 문으로 출력하기
foreach 란 for(타입 변수명 in 배열) { 실행코드 } 형태로 쓰며
배열[0]부터 [19] 까지의 값을 차례대로 foreach를 반복할때마다 변수에 복사시킨다.
int[] iMoney = new int[20]; // Money 배열 선언,[] 인덱스 방식
// 처음값이 First, 마지막 값이 last found
int iCount;
for(iCount = 0; iCount < 20; iCount++)
{
iMoney[iCount] = 1000 + (4 * iCount);
}
foreach(int iNum in iMoney)
{
Console.WriteLine("{0} ",iNum); // foreach에서 돌다가 사라짐.
}
예제2) 1차원,2차원 배열에 GetLength() 함수 써보기
1차원 배열일때 1차원배열.GetLength(0); 사용 시 열의 수가 반환되고
2차원 배열일때 2차원배열.GetLength(0); 사용 시 행의 수가 반환된다. GetLength(1);은 열의 수 반환
int[] iMoney = new int[20];
Console.WriteLine("1차원 배열 열의 수 : "+iMoney.GetLength(0)); // 1차원 배열일때는 0일때 열의 수 반환.
int[,] i2Array = { { 1000, 1004, 1008 },
{ 1012, 1016, 1020 } }; // 한꺼번에 다집어 넣을수 있음.
Console.WriteLine("2차원 배열 행의 수 : " + i2Array.GetLength(0)); // 2차원 배열일때는 0일떄 행의 수
Console.WriteLine("2차원 배열 열의 수 : " + i2Array.GetLength(1)); // 1일떄 열의 수 를 반환
예제3) 2차원 배열 표 형식으로 출력 (for, foreach 사용)
int iCount;
int[,] i2Array = { { 1000, 1004, 1008 },
{ 1012, 1016, 1020 } };
//표 모양으로 2차원 배열 값 출력(for)
//===============================================
for (iCount = 0; iCount < i2Array.GetLength(0); iCount++)
{
for(int iCount2 = 0; iCount2 < i2Array.GetLength(1); iCount2++)
{
Console.Write(i2Array[iCount,iCount2]+" "); // 1일떄 열의 수 를 반환
}
Console.WriteLine();
}
iCount = 0;
Console.WriteLine();
//표 모양으로 2차원 배열 값 출력(foreach)
//===============================================
foreach (int iNum in i2Array)
{
Console.Write(iNum+" ");
iCount++;
if(iCount%i2Array.GetLength(1) == 0) Console.WriteLine();
}
예제4) 배열 함수들을 사용하기
함수를 쓰고 f1을 누르면 설명창으로 연결된다.
BinarySearch는 먼저 배열이 정렬되어 있지 않다면 정확한 값을 반환하지 않는다.
Console.WriteLine("=============================");
int[,] iArray = { { 1, 2, 3 }, { 4, 5, 6 } };
Console.WriteLine("GetLength(0) " + iArray.GetLength(0));
Console.WriteLine("GetLength(1) " + iArray.GetLength(1));
Console.WriteLine("GetUpperBound(0) " + iArray.GetUpperBound(0));
Console.WriteLine("GetUpperBound(1) " + iArray.GetUpperBound(1));
Console.WriteLine("Length " + iArray.Length);
Console.WriteLine("=============================");
Console.WriteLine("Reverse Test : 1, 2, 3, 4, 5, 6 뒤집기");
int[] i1Array = { 1, 2, 3, 4, 5, 6 };
Array.Reverse(i1Array);
foreach (int iTemp in i1Array)
{
Console.Write(iTemp + " ");
}
Console.WriteLine("\n=============================");
Console.WriteLine("Sort Test : 7, 200, 2, 65, 84, 11 정열");
int[] i2Array = { 7, 200, 2, 65, 84, 11 };
Array.Sort(i2Array);
foreach (int iTemp in i2Array)
{
Console.Write(iTemp + " ");
}
Console.WriteLine("\n=============================");
Console.WriteLine("BinarySearch Test : 11의 위치(인덱스 번호) 검색");
int iResult = Array.BinarySearch(i2Array, 11);
Console.WriteLine("BinarySearch " + iResult);
Console.WriteLine("=============================");
Console.WriteLine("Clear Test : 6, 5, 4, 3, 2, 1에서 [3]부터 2개 삭제");
Array.Clear(i1Array, 3, 2);
foreach (int iTemp in i1Array)
{
Console.Write(iTemp + " ");
}
Console.WriteLine("\n=============================");
'컴퓨터 > C#' 카테고리의 다른 글
[C#] 메모장에 소스적어 컴파일 하기 (0) | 2020.05.29 |
---|---|
[C#] 클래스 (0) | 2020.05.28 |
[C#] 닷넷 (0) | 2020.05.27 |
[C#] 소수 검사하기 (0) | 2020.05.26 |
[C#] 메소드 (0) | 2020.05.26 |