오늘 배운 내용 (인터페이스와 열겨형(enum), 예외처리 및 델리게이트 람다 및 LINQ, 알고리즘)
class MyClass :IMyInterface
{
public void method()
{
}
Public int method(string str)
{
return 0;
}
//이렇게 인터페이스를 사용하면 다중 상속을 제공한다.
public enum month
{
Jan=1,
Feb
Mar
Apr
May
Dec
}
public static void ProcessMonth(int month)
{
if(month >= (int)Month.jan && month <= (int)Month.Dec)
{
Month selcetMonth = (Month)month;
Console.WriteLine("선택한 월은 {0}입니다", selectmonth);
}
else
{
Console.WriteLine("올바른 월을 입력해주세요");
}
static void main (string args[])
{
int userInput = 3;
ProcessMonth(userInput);
//열거형 enum의 예이다.예를 들면 3->enum month으로 전환해서Mar로 출력.
try
{
// 여기 안에서 위험할 수 있는 코드 작성
int number = int.Parse("abc"); // 예외 발생 예시
Console.WriteLine(number);
}
catch (FormatException)
{
// 특정 예외 처리
Console.WriteLine("숫자가 아닙니다!");
}
catch (Exception ex)
{
// 다른 모든 예외 처리
Console.WriteLine("오류 발생: " + ex.Message);
}
finally
{
// 예외 발생 여부와 상관없이 항상 실행
Console.WriteLine("작업 끝!");
}
//try catch를 사용해서 예외처리기능. 마지막에 finally를 사용해 예외 발생 여부와 상관없이 실행해주는 조건도 추가함.
using System;
// 델리게이트 선언
delegate void MyDelegate(string message);
class Program
{
static void Main()
{
// 델리게이트를 람다식으로 바로 구현
MyDelegate del = msg => Console.WriteLine("Hello " + msg);
// 델리게이트 호출
del("World"); // 출력: Hello World
}
}
//나중에 변수처럼 사용가능.매서드를 연결하고 나중에 호출 가능.
int Fibonacci(int n)
{
if (n <= 1)
return n;
return Fibonacci(n - 1) + Fibonacci(n - 2);
}
//알고리즘으로 시간복잡도와 공간복잡도 계산.
(시간복잡도)
Fibonacci(n) 호출하면,
→ Fibonacci(n-1) + Fibonacci(n-2) 호출
=> O(2^n)
(공간 복잡도)
재귀 호출이 스택에 쌓이는 깊이 = 최대 n까지
스택에서 한 번에 들어갈 수 있는 최대 깊이 = n
→ O(n)