19. 인터페이스에서 자동 프로퍼티 사용법
·
💻 Programming Language/C#
namespace InterfacePropertyEx { // 인터페이스 프로퍼티 interface IKeyValue { // 인터페이스에서 자동 프로퍼티는 C# 컴파일러가 자동으로 구현해주지 않는다. // 따라서, 해당 인터페이스를 상속받는 클래스에서 구현해주어야 한다. string Key { get; set; } string Value { get; set; } } class KeyValue : IKeyValue { public string Key { get; set; } public string Value { get; set; } // 이렇게 상속받는 클래스에서 자동프로퍼티를 이용해서 구현할 수 있다. // IKeyValue의 인터페이스를 구현해주고 있음(즉, 컴파일러가 자동으로 프로퍼티를 구현해줌)..
18. C# 7.0에서 자동 프로퍼티 사용법
·
💻 Programming Language/C#
자동 프로퍼티 기능은 C# 3.0에서 도입된 기능 기존 프로퍼티 사용 코드 public string Name { get { return name; } set { name = value; } } public DateTime EntryDate { get { return entryDate; } set { entryDate = value; } } C# 3.0 이후 자동 프로퍼티 사용 코드 public string Name { get; set; } public DateTime EntryDate { get; set; } C# 7.0 부터는 자동 프로퍼티에 초기값이 필요할 때 생성자에 초기화 코드를 작성해야하는 불편함을 해소할 수 있도록 초기값을 바로 설정할 수 있다. 아래 코드를 통해 확인해보자 기존 C# 3.0에..
17. 프로퍼티(Property)의 이해
·
💻 Programming Language/C#
namespace PropertyEx { //프로퍼티 class DemoClass { private int demoField; public int getDemoField() { return demoField; } public void setDemoField(int demoField) { this.demoField = demoField; } } class Program { static void Main(string[] args) { DemoClass demoClass = new DemoClass(); demoClass.setDemoField(100); Console.WriteLine(demoClass.getDemoField()); } } } 보통 Java나 객체지향언어 에서 위와 같은 방식으로 getter..
16. 추상클래스(Abstract Class) 이해
·
💻 Programming Language/C#
namespace AbstractClassEx { abstract class MyAbstractClass { protected void protectedMethod() { Console.WriteLine("추상클래스의 protected method"); } public void publicMethod() { Console.WriteLine("추상클래스의 public method"); } public abstract void abstractMethod(); // 인터페이스에서는 추상메소드가 기본적으로 public이기 때문에 반환타입만 사용했지만 // 추상클래스에서는 추상메소드에 제한자 및 abstract 키워드를 사용해줘야 한다. } class Child : MyAbstractClass { public o..
15. 인터페이스(Interface) 이해
·
💻 Programming Language/C#
namespace InterfaceEx { interface IMyInterfaceA { void output(); } interface IMyInterfaceB { void output(); } class MyClass : IMyInterfaceA, IMyInterfaceB // 다중 상속 { static void Main(string[] args) { MyClass myClass = new MyClass(); IMyInterfaceA ia = new MyClass(); ia.output(); IMyInterfaceB ib = new MyClass(); ib.output(); } void IMyInterfaceA.output() // 다중상속을 통해 가져온 클래스들의 메소드명이 같은경우에는 `클래스.메..
14. 확장 메소드
·
💻 Programming Language/C#
확장 메소드 : 기존 클래스의 기능을 확장하는 기법, 상속과 구별하여 생각하면 이해하기가 쉽다. 상속과 다르게 "기존클래스" 에 확장을 해줌으로써 본래 있던 기능처럼 사용할 수 있다. 주의)Java와 혼동하지 말것!!! Java는 extends라는 키워드를 이용해 상속을 받는데 Java에서는 상속에 확장의 개념이 포함된다. 하지만 C#에서는 상속과 확장 개념을 분리시킨다. ####확장 메소드 선언 형식 - static 키워드가 붙어야한다. public static class 클래스명 { public static 반환형식 메소드명( this 대상형식(클래스, 타입) 식별자, 매개변수) { } } 확장메소드 사용 예제 코드1 using System.Collections; namespace ExtansionE..
13. 튜플 리턴 타입을 이용한 메소드 사용하기
·
💻 Programming Language/C#
using System; namespace TupleEx2 { class Program { static void Main(string[] args) { // 튜플 리턴타입을 이용한 메소드 선언 (int count, int sum, double avg) getScore (List data) //튜플 리턴타입을 명시. { int count = 0, sum =0; double avg = 0; foreach (var item in data) { count++; sum += item; } avg = sum / count; return (count, sum, avg); } var data = new List {10, 11, 22, 33, 44}; var result = getScore (data); Console...