개발 관련 학습정리/C#(10)
-
디자인 패턴 - Observer Pattern
Observer Pattern 한 객체에 상태가 변경될 경우 그 객체에 의존하는 다른 객체들한테 연락을 하고, 자동으로 하위 객체들의 내용이 갱신된다. UML Diagram 데이터의 주인은 subject이고, observer들은 데이터가 변경되었을 때 subject에서 갱신하기를 기다린다. 전달할 데이터 형식은 subject를 상속하여 정의한다. 패턴 구현 Subject public abstract class Subject { private List observers = new List(); public void AddView(Observer observer) { observers.Add(observer); } public void RemoveView(Observer observer) { observer..
2021.04.01 -
디자인 패턴 - 싱글톤 (Singleton)
Singleton 애플리케이션을 실행한 후 인스턴스를 하나만 생성하여 어디서든 그 인스턴스에 접근할 수 있도록 하는 디자인 패턴 일반적인 싱글톤 패턴의 클래스는 다음 3가지의 요소를 가집니다 private 생성자 private static 인스턴스 객체 public static 객체 반환 함수 public class Singleton { private Singleton() { } private static Singleton _instance; public static Singleton Instance { get { if (_instance == null) { _instance = new Singleton(); } return _instance; } } }하지만 이럴경우 Single thread 환경에서는..
2021.04.01 -
C# 람다 식 Lambda
람다 시은 무명 메서드를 표현하는데 사용되며, => 연산자 오른쪽에 본문을 표시하여 간단히 표현할 수 있다. 람다 식을 이용하면 delegate와 무명 메서드도 간략히 표현할 수 있다. 식 람다 delegate int calculate(int a, int b); calculate cal = (a, b) => a + b; Console.WriteLine(cal(10, 20)); 먼저 delegate를 통해 대리자를 선언 한 뒤, 람다식을 참조시킨다. 람다식으로 구현된 무명 메서드는 일반 메서드처럼 매개변수를 넘겨 대리자를 호출한다. 문 람다 delegate int calculate(int a, int b); calculate cal2 = (a, b) => { int sum = a + b; Console.W..
2021.01.27 -
C# Generic
Generic c#에서는 Generic이라는 타입을 사용할 수 있는데, Generic 타입은 int/double과 같은 데이터 타입을 정하지 않고 타입 자체를 파라미터로 받아들이도록 정의할 수 있다. 또한 변수 뿐만아니라 메서드, 클래스, 인터페이스 등에서도 사용할 수 있다. class GenericStack { T[] _objlist; int position = 0; public GenericStack(int size) { _objlist = new T[size]; } public void Push(T newvalue) { _objlist[position++] = newvalue; } public T Pop() { return _objlist[position--]; } } 해당 클래스는 stack 자료..
2021.01.27 -
C# 추상클래스와 인터페이스
추상 클래스 추상 클래스는 미완성된 클래스를 말하며, 추상 메서드나 추상 프로퍼티를 포함한다. 이 클래스 내에는 직접적인 구현을 하지 않으며, 오직 자식 클래스에서 상속을 통해서만 구현한다. public abstract class abstractclass { public string name; public int id { get; set; } public abstract void show(); // 추상 메서드 } public class normalclass : abstractclass { public override void show() { Console.WriteLine("."); } } abstractclass 에서는 추상클래스 이므로 메서드를 구현하지 못하고, 상속받은 자식 클래스에서 구현한다. ..
2021.01.26 -
C# Delegate
Delegate란 대리자란 뜻으로 메서드를 참조하는 변수이다. 이러한 Delegate는 메서드를 대신 호출하여 실행시킬 수 있고 여러 메서드를 참조할수도 있다. 일반적인 Delegate //////////////////////////////////////////////////////// Alert Class class Class1 { public delegate void Alert(string text); public void notice(string text) { Console.ForegroundColor = ConsoleColor.Yellow; Console.WriteLine("notice : " + text); } public void error(string text) { Console.Foregr..
2021.01.25