C# 15

예외처리

예외처리는 말 그대로 예외상황이 발생했을 때의 처리를 도와주는 문법이다.  오버플로우나 0으로 나누기 등등 심각한 에러가 발생했을 때도 보통 프로그램이 다운되지만, 이 문법을 사용하면 프로그램이 계속 실행되게끔 유지할 수 있다. try{ if(a/0){}}catch(Exception e){}finally{}이런식으로 try - catch 를 이용해서 예외처리를 하는데, try는 무조건 실행된다. 위 상황처럼 만약 0으로 나누기를 실행한다면 에러가 발생하게 되는데 이 때, catch에서 에러를 받아서 catch 안쪽이 실행된다. 또 finally라는 것은 오류가 생겼든 말든 마지막에 실행하고 싶은 동작이 있다면 이 안에 작성하면 된다.

C# 2025.01.20

delegate (대리자), Event

delegate 대리자, 말 그대로 직접호출하는 대신 특정한 때에, 내가 넘겨준 함수를 실행해주세요. 하고 맡기는 것이다.  delegate 는 함수자체를 형식으로 지정하고 이를 매개변수로 넘겨줄 수 있다. delegate string InfoPrint();void PrintInfo(InfoPrint info){ info();}string TestDelegate(){ Console.WriteLine("Info"); return "Info";}main(){ InfoPrint ip = new InfoPrint(TestDelegate); ip(); PrintInfo(TestDelegate);}먼저 delegate 형식을 선언한다. 함수자체를 형식으로 만드는 것이기에 반환형 stri..

C# 2025.01.20

프로퍼티

클래스의 은닉성을 위해서는 외부에서 어떤 데이터에는 접근하지 못하게 막아야한다. 그럴 때, private 키워드를 사용해 외부에서 접근을 하지 못하게 막고 만약 접근하려면 Get, Set 함수를 만들어서 접근해야한다. 프로퍼티는 이를 간편하게 해주는 문법이다. 먼저 .Get, Set함수를 구현해보겠다.class Person{ string name; public string GetName(){return name;} public void SetName(string n){name=n;}}이처럼 두 개의 함수를 한개의 변수에 대해서 만들어야한다. 그런데 변수가 많아진다면 이러한 함수또한 엄청 많아질 것이다. 그래서 제공하는 문법이 프로퍼티이다. class Person{ string name;..

C# 2025.01.20

인터페이스 ( Interface )

클래스의 상속관계에서 특정 기능은 반드시 자식클래스에서 구현하게끔 강제하는 방법이 있다.  먼저 추상클래스인데, 이는 실체가 없는 클래스를 의미한다. 실체가 없다는 것은 객체로 만들 수 없다는 의미이다.  abstract class Person{ public abstract void Walk();}class Student : public Person{ public override void Walk(){}}abstract 키워드를 사용해 추상클래스와 추상함수를 만들 수 있다. 이 때, Person클래스를 상속하는 클래스는 무조건 Walk를 오버라이드해야 한다.  그런데 C#에서는 다중상속을 지원하지 않는다. 따라서 만약 여러 기능을 상속받은 클래스를 만들고 싶다면 다중상속 대신 interface 를 사용하..

C# 2025.01.19

일반화 ( Generic )

일반화는 클래스나 함수를 만들때 사용할 수 있다. 비슷한 동작을 타입만 다르게하여 구현하고 싶을 때, 여러개의 버전을 만드는 대신 하나의 클래스나 함수로 작성할 수 있게끔 도와주는 문법이다.  class MyClass{ T type; public T GetClassType() { return type; }}다음과 같은 방식으로 로 타입을 사용할 수 있다. T라는 타입이 지정되면 T를 사용한 곳이 해당 타입으로 치환된다.  main{ MyClass mc = new MyClass();}다음과 같은 방식으로 사용할 수 있다. 함수도 마찬가지이다.public void printType(T type){ Console.WriteLine(typeof(type));}위처럼 함수도 일반화함수로..

C# 2025.01.19

배열, List, Dictionary

배열이란 특정타입의 변수 여러개를 쉽게 저장하고 관리할 수 있는 자료구조이다.  만약 int 변수 20개를 사용해야한다고 가정해보자.int a1;int a2;int a3;...int a20;일일이 이렇게 선언하고 값을 수정할 때도 20번을 이렇게 타이핑해야한다.  이럴 때 배열을 사용한다.int[] arr = new int[20];// int[] arr = new int[20]{1, 2, 3, 4,....20};// int[] arr = new int[]{1, 2, 3, 4,....20};// int[] arr = {1, 2, 3, 4,....20};배열을 초기화하는 방법은 이렇게 4가지이다. 이렇게 한번에 여러개의 변수를 관리가능하며, 이는 반복문을 통해 쉽게 수정 및 접근이 가능하게 된다.  다음은 ..

C# 2025.01.19

클래스의 특징

상속,은닉, 다형성에 대해 알아볼 것이다.  우선 상속성은 말 그대로 어떤 클래스의 변수나 함수를 상속받아서 다른 클래스에서도 사용할 수 있게하는 개념이다. 부모-자식으로 표현하자면 부모클래스가 가지고 있던 변수를 자식클래스가 상속한다면 자식클래스에서도 그 변수를 사용가능하게 된다. class Person(){int hp;public void Move();}class Student() : public Person{}이런 식으로 상속이 가능하다. 그리고 이전 글에서 this키워드는 자기자신을 가리킨다고 했는데, base란 키워드도 있다. 이는 부모클래스를 가리키는 키워드이다.  그렇다면 이 상속이란 개념은 어디에 쓰일까내 생각에는 우리가 함수를 만드는 것과 비슷하다고 생각한다. 함수를 만드는 이유는 특정기..

C# 2025.01.19

클래스와 static 키워드

우선 static 이라는 키워드에 대해 알아보자.  static 키워드는 클래스 멤버변수나 멤버함수에 사용할 수 있다. 이 키워드가 붙은 멤버는 객체 각각에 있는 것이 아닌 클래스 공유 자원이다. 즉, 해당 클래스로 만들어진 모든 객체가 공유하는 것이다.  class Person{ static int count=0; int hp; static Person CreatePerson() { }}다음과 같이 만들 수 있으며 static 함수에서 멤버변수나 함수에는 접근이 불가하다. 그렇기에 hp 변수에는 접근할 수 없다. 그리고 이런 static 변수나 함수는 클래스이름으로 접근한다. Person.count , Person.CreatePerson() 방식이다.  이런 sta..

C# 2025.01.19

클래스 기초

객체지향 프로그래밍에서는 코드로 표현할 때, 프로그램을 객체의 모임, 객체들의 상호작용으로 모델링하는 것이다. 이 때, 객체를 생성하기 위한 틀이 클래스라고 생각하면 된다. 많이 드는 비유를 여기서도 작성하자면 붕어빵의 틀과 그 틀로 만들어지는 붕어빵에 비유할 수 있다. (이보다 적합한 비유가 생각나진 않는다.)클래스는 붕어빵의 틀로써 어떤 종류의 객체를 만들지 틀을 정해놓는 것이다. 그리고 나중에 해당 객체를 만들고 싶을 때 그 클래스를 바탕으로 만드는 것이다.  class Person{ 내용}위와 같이 선언을 할 수 있다.  클래스의 내용은 멤버변수, 멤버함수로 채워지게 된다. class Person{ string name; int weight; int height; public P..

C# 2025.01.19