C#/이것이 C#이다 썸네일형 리스트형 15장. LINQ 1. 데이터! 데이터! 데이터! LINQ(Language INtegrated Query): C# 언어에 통합된 데이터 질의 기능 질의(Query)란 - From: 어떤 데이터 집합에서 찾을 것인가 - Where: 어떤 값의 데이터를 찾을 것인가 - Select: 어떤 항목을 추출할 것인가 class Profile { public string Name { get; set; } public int Height { get; set; } } Profile[] arrProfile = { new Profile() { Name="정우성", Height=186 }, new Profile() { Name="김태희", Height=158 }, new Profile() { Name="고현정", Height=172 }, ne.. 더보기 14장. 람다식 1. 람다식, 너는 어디에서 왔니? 람다 계산법: 어떤 값을 변수에 대입하고 싶으면, 함수를 변수에 대입 2. 처음 만나는 람다식 익명 메소드: 무명 함수로, 입력(매개 변수)와 출력(반환 값)을 가지고 있음 기본적인 람다식 매개_변수_목록 => 식 람다식 선언 예 delegate int Calculate(int a, int b); static void Main(string[] args) { Calculate calc = (int a, int b) => a + b; } 형식 유추로 더 간단하게! Calculate calc = (a, b) => a + b; 만약에 대리자를 쓴다면 delegate int Calculate(int a, int b); static void Main(string[] args) {.. 더보기 13장. 대리자와 이벤트 (12장, 예외 처리하기 파트는 건너뛰었습니다) 1. 대리자란? 출장을 나온 상현이는 사장님께 급히 보고 드릴 일이 있어 회사에 전화를 걸었습니다. 그런데 전화를 받은 사람은 사장님이 아닌 사장님의 비서였습니다. 상현이는 비서에게 "사장님이 돌아오시면 제게 전화 부탁드린다고 전해주세요."라는 메모를 남기고 전화를 끊었습니다. 잠시 후, 돌아온 사장님은 비서의 메모를 받고 상현이에게 전화를 걸어 통화를 했습니다. 이 이야기에서 상현이가 비서에게 했던 부탁이 콜백(Callback)입니다. 콜백: 대신 어떤 일을 해줄 코드(비서)를 두고, 이 코드가 실행할 세부 코드는 컴파일 시점이 아닌 실행 시점에 부여하는 것 대리자: 메소드에 대한 참조, 대리자가 후에 메소드를 호출해줌 대리자 선언 한정자 delegate.. 더보기 11장. 일반화 프로그래밍 1. 일반화 프로그래밍 일반화: 특수한 개념으로부터 공통된 개념을 찾아 묶는 것 일반화 프로그래밍: 데이터 형식을 일반화하는 것 2. 일반화 메소드 한정자 반환 형식 메소드 이름 (매개 변수 목록) { // ... } 제네릭 기본 static void Main(string[] args) { int[] arr = { 1, 2, 3 }; Console.WriteLine(First(arr)); } static T First(T[] arr) { return arr[0]; } class Program { // 정적 메소드로 만들지 않으면 객체.함수명으로 호출해야 함 static void CopyArray(T[] source, T[] target) { for (int i = 0; i < source.Length; .. 더보기 10장. foreach가 가능한 객체 만들기 1. IEnumerable과 IEnumerator [C#] IEnumerable, IEnumerator 그리고 yield enumerate 영어로 수를 세다. 카운팅 하다! 두 인터페이스는 열거자와 관련이 있다.(반복자와 동일한…것 같다. 아닐수도..) using System.Collections; C#의 모든 Collections 컬렉션은 IEnumerable, IEnumerator를 상 ansohxxn.github.io foreach를 사용할 수 있는 클래스를 만들기 위해서는, IEnumerable 인터페이스와 IEnumerator 인터페이스를 상속하고 메소드와 프로퍼티를 구현해야 함 [C#] IEnumerator IEnumerable 컬렉션namespace System.Collections{ pub.. 더보기 9장. 프로퍼티 1. 프로퍼티를 사용하는 이유 프로퍼티를 사용하면 은닉성과 편의성을 모두 잡을 수 있습니다. class 클래스이름 { 데이터형식 필드이름; 접근한정자 데이터 형식 프로퍼티이름 { get { return 필드이름; } set { 필드이름 = value; } } } 이렇게 사용한다. 2. 메소드보다 프로퍼티 class MyClass { private int myField; public int GetMyField() { return MyField; } public void SetMyField( int NewValue ) { myField = NewValue; } } MyClass obj = new MyClass(); obj.SetMyField(3); Console.WriteLine( obj.getMyField.. 더보기 8장. 인터페이스와 추상 클래스 1. 인터페이스의 선언과 활용 // 1. 인터페이스의 선언 interface ILogger { void WriteLog(string log); } 2. 인터페이스의 구현 vs 상속 우선 둘의 가장 큰 차이점은 "왜" 만들어졌냐입니다. 구현이 다중상속을 지원하기 위해서 만들어졌다는 말도 있지만 이것은 맞는 말은 아닙니다. (라고 들었습니다.) 구현(implements): 특정 메소드를 꼭 만들라 강제 구현은 특정 인터페이스를 클래스에서 구현한다는 것을 의미합니다. 이를 통해 인터페이스에서 정의한 메서드에 강제력이 생깁니다. 따라서, 해당 인터페이스를 구현한 클래스에서는 인터페이스의 메서드를 재정의함으로써 구현해야 합니다. 상속(extends): 다형성을 위해서 만들어짐 상속은 자식이 부모의 특징을 상속받아.. 더보기 7장. 클래스: this 키워드, this() 생성자, 접근 한정자, static 변수, 구조체 주의) 생성자나 종료자 개념 등 기본적인 것들은 생략하였습니다. 클래스가 뭐야? 클래스란 int, string과 같이 하나의 형식이라고 생각하면 된다. 인스턴스는 클래스라는 붕어빵 틀로 찍어낸 각각의 붕어빵이라고 생각하면 쉽다. 생성자 class Cat { // 생성자 자동 생성 } 생성자를 따로 명시하지 않을 경우 기본적으로 생성된다. 정적 필드와 메소드 선언, static using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace TestConsoleApp_4._19 { class Cat { public static int Speed =.. 더보기 이전 1 2 다음