본문 바로가기

전체 글93

관용구 - 판정과 분기 1. 단순비교 비교하려는 변수는 비교 연산자 왼쪽에 위치 // 좋은 예 if (height height) { ... } 2. 범위비교 지정범위 내에 해당 수치가 있는지 조사할 때는 수치를 수직선에 나열 비교 대상인 변수를 전부 왼쪽에 두기 보다는 중앙으로 모아두는 것이 좋음 *의문점 3개 이상의 조건이 걸려있을 때는? if (MinValue 2019. 8. 24.
관용구 - 초기화 1. 변수 초기화 변수 선언과 초기화는 동시에 이뤄져야 하는 것이 원칙 // 좋은 예 var age = 29; // 나쁜 예 int age age = 29; 2. 배열과 리스트 초기화 설정할 값이 이미지 정해져 있을 경우에 초기화를 해줌 var cities = new String[] { "Seoul", "Gimcheon", "ChunCheon" }; var numbers = new List { 100, 200, 300 }; 3. Dictionary 초기화 var langs = new Dictionary() { { "C#", "씨샾" }, { "Swift", "스위프트" }, { "Kotlin", "코틀린" }, }; // C# 6.0 이후 var langs = new Dictionary() { ["C#".. 2019. 8. 24.
C# 대리자(Delegate)의 진화 2019. 8. 17.
20190817 스터디 질문 1. 클래스와 네임스페이스 차이 https://www.geeksforgeeks.org/difference-namespace-class/ 2. 정적클래스와 싱글톤의 차이 접근제한적인 측면에서 싱글톤이 정적클래스보다 상대적인 우위에 있지않을까 추측 http://net-informations.com/faq/netfaq/singlestatic.htm 3. 메인메서드가 인스턴스 없는 상태에서 실행되고 있다는 말이 이해되지 않음 메인메서드는 정적메서드임 인스턴스가 없다 또는 생성할 수 없다는 말은 정적변수/메서드/클래스에 모두 해당되는 말이다. 논의결과, 인스턴스 생성이 불가능하다는 말이 개발자가 코드 상에서 인스턴스화를 못시킨다는 말이지 정적클래스 또는 메서드의 인스턴스 자체가 없다는 이야기는 아닐 것이라는 판단.. 2019. 8. 17.
LINQ 쿼리 연산자 정리 쿼리 연산자 실행형태 설명 Where 지연실행 조건에 따라 값의 시퀀스를 필터링 처리 Skip 시퀀스 안에 지정된 개수만큼의 요소를 건너뛰고 남은 요소를 반환 SkipWhere 지정된 조건이 만족되는 동안에 시퀀스의 요소를 건너뛰고 남은 요소를 반환 Take 시퀀스의 가장 앞부분부터 요소를 지정된 개수만큼 반환 TakeWhile 지정된 조건이 만족되는 동안에 시퀀스에서 요소를 반환 DefaultIfEmpty 지정한 시퀀스의 요소를 반환, 시퀀스가 비어 있을 경우에는 형식 매개변수를 기본값으로 반환 Select 시퀀스에 있는 각 요소를 새로운 형으로 사상 SelectMany 시퀀스에 있는 각 요소를 IEnumerable로 사상하고 그 결과로 나온 시퀀스를 하나의 시퀀스로 평탄화*함 GroupBy 지정된 키.. 2019. 8. 16.
LINQ(Language Integrated Query) 직역하면 언어로 통합된 쿼리 LINQ를 사용하면 객체, 데이터, XML과 같은 다양한 데이터를 표준화된 방법으로 처리할 수 있음 '여러 요소 중에서 조건을 만족하는 요소를 찾는' 처리를 수행할 때 컬렉션의 종류에 따라 다른 방식으로 코드를 작성해야 한다는 것은 프로그래머에게 큰 부담이 된다. LINQ를 사용하면 서로 다른 형태의 컬렉션이라도 IEnumerable 인터페이스만 구현하면 같은 메서드를 사용할 수 있다. 특징 : 메서드 체인이 가능하다. IEnumerable query = names.Where(s => s.Length s.ToLower()); 2019. 8. 16.
람다식(Lamda) C# 3.0부터 도입 람다식은 일종의 메서드, 함수명이 없는 함수 규칙 1. 람다식에서 {}안에 하나의 명령문을 포함할 때는 {}와 return을 생각할 수 있음 2. 람다식에서는 인수의 형을 생략할 수 있음(컴파일러가 데이터타입을 추론할 수 있기 때문) 3. 파라미터가 1개인 경우에는 ()를 생략할 수 있음 *람다식을 통해 어떻게 하는가(How)가 아니라 무엇을 하는가(What)라는 것을 생각하면서 코드를 작성할 수 있게 됐다. --> 추상도가 높아졌다 2019. 8. 16.
정적메서드에서는 자기 자신의 인스턴스 메서드 호출불가 class Program { // 정적메서드 public static void Main(string[] args) { Sub() } static void Sub() { // 위의 Main메서드에서 Sub메서드를 사용하려면, Sub를 꼭 붙여주어야만 한다. } } 인스턴스 메서드를 호출하려면 어느 인스턴스인지 지정해야 하는데, Main메서드는 인스턴스가 존재하지 않은 상태로 동작함 --> 인스턴스를 특정할 수 없음 --> 그러므로 내부 메서드를 호출하고 싶다면, 불러와야할 메서드를 정적 메서드로 정의해야 함 2019. 8. 14.
[용어] 시그니처 메서드 이름, 반환(return)값의 형, 접근자 제한 수준과 같이 메서드가 가지는 특징 2019. 8. 14.