자료형[ ] 배열명 = new 자료형[배열 크기];
string[] games = new string[3]; //미리 선언하고 나중에 만들기 string[] games; games = new string[3];
// 이미 정해진 배열의 크기는 고정! int[] number = new int[3]; number[0] = 10; Console.WriteLine(number[0]) // 10 number = new int[5]; Console.WriteLine(number[0]); // 0
string[] games = new string[3]; games[0] = "League of Legends"; // 값을 선언하지 않으면 기본값으로 초기화. 값 형식 : 0, 참조 형식 : null
조건식을 쓰지 않고 해당 배열을 처음부터 끝까지 반복할 때 사용
foreach(변수타입 반복변수 in 배열) { 실행 내용 }
string[] Games = new string[3] {"League of Legends", "MapleStory", "Diablo"}; foreach(string game in Games){ Console.WriteLine(game); }
2차원 배열
자료형[,] 배열명 = new 자료형[행, 열]; int [,] arr2 = new int[10, 5];
3차원 배열
자료형[,,] 배열명 = new 자료형[높이, 가로, 세로]; short[,,] arr3 = new short[8, 3, 10]; // 3 * 10 배열에 8의 높이
반환형식 함수이름() { 함수 } void hello(){ Console.WriteLine("Hello World!"); }
return값과 반환 형식이 일치해야 함!
int hp = 5; ... void Attack(){ if(hp < 1) return; --hp; Console.WriteLine("데미지 : 1 현재 체력 : " + hp); } // 데미지 : 1 현재 체력 : 4
위의 코드에서 데미지를 damage라는 변수로 작동하게 만들기
int hp = 5; Attack(2); void Attack(int damage){ if(hp < 0) return; hp -= damage; Console.WriteLine("데미지 : " + damage + " 현재 체력 : " + hp); } // 데미지 : 2 현재 체력 : 3
객체(Object)는 실제 존재하는 모든 것.
객체 지향 언어에서는 클래스가 실제로 구현된 인스턴스.ex) 클래스 → 붕어빵틀, 객체 → 붕어빵
캡슐화
- 데이터와 코드를 외부에서 알 수 없도록 감추는 것추상화
- 객체들의 공통적인 특징을 추려내는 것 → 클래스를 정의하는 것상속
- 하위 클래스가 상위 클래스의 모든 것을 활용 가능
- 클래스를 재사용하여 반복적인 코드를 줄일 수 있음다형성
- 프로그램 언어의 각 요소(상수, 변수, 식, 오브젝트, 함수, 메서드)들이 여러 타입을 가질 수 있는 것
캐릭터를 생성한다 가정해보자.
string userName1 = "Chad"; string job1 = "전사"; int level1 = 50; string userName2 = "MelonG"; string job2 = "마법사"; int level2 = 23; string userName3 = "Dtail"; string job3 = "도적"; int level3 = 100;
캐릭터의 수가 늘어날 수록 코드가 길어지고 반복되는 코드들이 생김
→ class를 통해 데이터들의 공통된 부분을 추상화!
클래스의 생성
클래스 영역 내에서 변수, 함수 생성 가능!
하지만 함수를 호출하는 것은 불가능하다 ▼class Character { string userName; string job; string level; Console.WriteLine("제 이름은 " + userName + "입니다"); <- 실행 불가(함수 호출) }
함수를 호출하기 위해선 함수를 만들어 그 안에서 호출해야 함 ▼
class Character { string userName; string job; string level; public void IntroduceCharacter() <- 함수를 만들어서 실행 { Console.WriteLine("제 이름은 " + userName + "입니다"); } }
클래스를 만든다고 실행되지 않음! 사용을 위해선 객체를 생성해야 한다.
Character myCharacter = new Character(); // 객체 생성 myCharacter.userName = "chad" ; // 객체 속성 접근 시 '.' 사용 myCharacter.job = "전사"; myCharacter.level = 20; myCharacter.IntroduceCharacter(); // 제 이름은 chad입니다 class Character { string userName; string job; string level; public void IntroduceCharacter() { Console.WriteLine("제 이름은 " + userName + "입니다"); } }
내가 작업한 클래스의 변수 및 함수를 다른 클래스에서 접근하는 것을 설정.
1. public : 외부 클래스에서 접근 가능
2. private : 외부 클래스에서 접근 불가, 보편적으로 기본값임
3. protected : 상속 관계에서만 접근 가능
4. internal : 같은 프로젝트에서 접근 가능접근 제한자의 선언 위치
접근제한자 변수타입 변수이름 public int x; private int y;