[C#] 함수, 클래스, 객체, 인스턴스, 생성자
·
언어/C#
· 함수(Method) 함수란 어떤 일을 실행하는 코드를 묶어놓은 코드 블럭을 말한다. ​ · 클래스(Class) 객체를 생성하기 위해 변수와 메소드를 정의하는 틀이다. ​ · 객체(Object) 클래스에 정의된 내용이 메모리에 생성되면 객체라고 말한다. ​ · 인스턴스(Instance) 클래스로부터 만들어진 객체를 그 객체의 인스턴스라고 한다. 클래스로부터 객체를 만드는 과정을 인스턴스화라고 한다. ​ · 생성자 클래스와 같은 이름을 가진 인스턴스 초기화 메서드이다. 반환값이 없고 오버로딩이 가능하다. using System; namespace Test { class Food // 클래스 { public Food() // 생성자 { // 초기화가 필요한 내용 } public void Rice() // ..
[C#] Generic Type 사용하기
·
언어/C#
동일한 내용이지만 데이터 타입만 다른 메소드를 사용할 때, 원래대로라면 매번 데이터 타입만 다르고 내용은 같은 메소드를 만들어주어야 한다. 이때 Generic Type을 사용하면 메소드를 한 번만 호출하고도 원하는 기능을 모두 사용할 수 있다. void Swap (ref T a,ref T b) { var temp = a; a = b; b = temp; } a와 b의 자리를 바꿔주는 간단한 예시문이다. 이름 뒤에 를 붙여 모든 데이터 타입을 아우를 수 있게 됐다. class Program { void Swap (ref T a,ref T b) { var temp = a; a = b; b = temp; } void IntProcess() { int a = 1; int b = 2; Swap (ref a, ref..
[C#] temp를 사용한 자리 바꿔치기
·
언어/C#
static void Main(string[] args) { int[] arr = { 1, 2, 3, 4, 5, }; for (int i = 0; i < arr.Length; i++) Console.Write($"{arr[i]} "); } 여기서 5와 1의 위치를 바꾸고 싶다. static void Main(string[] args) { int[] arr = { 1, 2, 3, 4, 5, }; arr[0] = arr[4]; arr[4] = arr[0]; for (int i = 0; i < arr.Length; i++) Console.WriteLine(arr[i]); } 단순하게 위치를 바꾸어 봤지만 1이 사라지고 5만 두 개로 늘어난 모습을 볼 수 있다. 이럴 때는 임시값인 temp를 사용하면 된다. s..
[C#] CS0122 보호 수준 때문에 액세스할 수 없습니다
·
언어/C#
monster = new Slime();​ class Knight : Player { Knight() : base(PlayerType.Knight) { SetInfo(100, 10); } } 오류가 발생했다. 보호 수준 때문에 엑세스할 수 없다는 내용. class Knight : Player { public Knight() : base(PlayerType.Knight) { SetInfo(100, 10); } } monster = new Slime(); 해결됐다. 한정자를 설정해주지 않아서 발생한 문제였다. public으로 설정해주고 나니 말끔.
[C#] overloading과 overriding
·
언어/C#
· overloading은 같은 이름의 함수를 여러번 호출하면서 다른 방식으로 사용하는 것이다. (정의는 아님. 내 맘대로 정리한 문장) static void Function(int a) { Console.WriteLine(a); } static void Function(int a, int b) { Console.WriteLine(a + b); } static void Main(string[] args) { Function(1); // 1 Function(4, 3); // 7 } Function(int a)와 Function(int a, int b)는 같은 이름을 갖고 있지만 각자 원하는 인자가 다르다. 인자를 넣어주면 알아서 다른 결과값을 출력해준다. 이게 오버로딩이다. ​ · overriding은 부..
[C#] Shallow Copy와 Deep Copy
·
언어/C#
갑자기 드는 생각인데 영어권 사람들은 코딩 배우기가 정말정말정말 쉽겠다. 문서 찾을 때도 그냥 보고 읽으면 되니까... 부럽다. · 얕은 복사 (Shallow Copy) 객체의 참조를 복사하는 것. class MyClass { public int name; public int age; } static void Main(string[] args) { MyClass myClass = new MyClass(); myClass.name= 1; myClass.age= 2; MyClass yourClass = myClass; yourClass.name= 100; Console.WriteLine($"{myClass.name} {myClass.age}"); Console.WriteLine($"{yourClass.nam..
[C#] ReadLine 문자열 입력 받기
·
언어/C#
C#에서 문자열을 입력받기 위해서는 ReadLine이라는 것이 필요하다. static void Main(string[] args) { string input = Console.ReadLine(); Console.WriteLine(input); } 입력한 값은 string 문자열이기 때문에 정수를 입력받고 싶다면 string을 int로 변환해주어야 한다. static void Main(string[] args) { int input = Convert.ToInt32(Console.ReadLine()); Console.WriteLine(input); } Convert.ToInt() 또는 int.Parse()를 사용해준다. static void Main(string[] args) { int input = int..
[C#] 상수, 열거 - 가위바위보 개선
·
언어/C#
using System; namespace CSharp { class Program { enum Choice { Rock = 1, Paper = 2, Scissors = 0 } static void Main(string[] args) { // 0 -> 가위 1-> 바위 2-> 보 Random rand = new Random(); int aiChoice = rand.Next(0, 3); // 0~2 사이의 랜덤 값 int choice = Convert.ToInt32(Console.ReadLine()); switch(choice) { case (int)Choice.Scissors: Console.WriteLine("당신의 선택은 가위입니다."); break; case (int)Choice.Rock: Cons..
[C] 햄버거 쌓기 게임
·
언어/C
#include #include #include int level; char patty; char cheese; char cabbage; char tomato; char mushroom; int ingredient[5] = { 0,0,0,0,0 }; int answer[6] = { 0,0,0,0,0,0 }; int myAnswer[6] = { 0,0,0,0,0,0 }; void burgerData(); void printHamburger(int inside); int main(void) { srand(time(NULL)); long startTime = 0; long prevTime = 0; long totalTime = 0; int num; burgerData(); startTime = clock();..
[C++] using namespace std
·
언어/C++
#include using namespace std; int main() { std::cout