"CSharp"의 두 판 사이의 차이

wwiki
이동: 둘러보기, 검색
(대리자 형식(delegate))
(Lambda Expression(람다 표현식))
46번째 줄: 46번째 줄:
 
=== IEnumerator ===
 
=== IEnumerator ===
 
순차접근 가능(MoveNext()), 접근위치를 내부적으로 가지고 있다.
 
순차접근 가능(MoveNext()), 접근위치를 내부적으로 가지고 있다.
 
== Lambda Expression(람다 표현식) ==
 
LISP에 들어 있다. λxyㆍplus(x, y) 처럼 함수를 사용하는 변수를 명시하는 표기방법이다. λ(람다)는 그리스 문자로 물리에서는 소립자의 하나이고, 부피의 단위로 100만분의 1을 나타내기도 한다.
 
 
c#에서 람다표현식을 사용해서 익명함수를 만든다.
 
 
=> : 람다 선언 연산자이다.
 
(input-parameter, ...) => expression
 
 
(input-parameters) => { <sequence-of-statements> }
 
<syntaxhighlight lang="c#">
 
class Program
 
{
 
    delegate int Calc(int a, int b);
 
 
 
    public static void Main(string [] args)
 
    {
 
        Calc c = (a, b) => a +b;
 
        int sum = c(1,1);
 
    }
 
}
 
 
 
</syntaxhighlight>
 
 
=== Action 대리자 ===
 
람다 식에서 값을 반환하지 않는 경우 Action 대리자 형식 중 하나로 변환할 수 있다.<syntaxhighlight lang="c#">
 
Action hello = () => Console.WriteLine("Hello");
 
 
hell();
 
</syntaxhighlight>매개변수가 2개이고 값을 반환하지 않는 람다식은 Action<T1, T2>대리자로 변환할 수 있다.<syntaxhighlight lang="c#">
 
Action<int, int> showSum = (x, y) =>
 
{
 
    int sum = x + y;
 
    Console.Write(sum);
 
}
 
showSum(1, 2);
 
</syntaxhighlight>
 
 
=== Func 대리자 ===
 
값을 반환하는 경우 Func대리자 형식으로 변환할 수 있다.
 
 
매개변수가 하나이고 값을 반환하는 람다식은 Func<T, TResult> 대리자로 변환할 수 있다. <syntaxhighlight lang="c#">
 
Func<int> func = () => 10; // 10을 반환
 
int ten = func();
 
 
Func<int, int> square = (x) => x*x;
 
Cosole.Write(square(10)); // 100출력
 
</syntaxhighlight>
 
  
 
== LINQ(Language Integrated Query) ==
 
== LINQ(Language Integrated Query) ==

2021년 2월 18일 (목) 05:33 판

형식 및 변수

값 형식

단순 형식

열거형 형식

구조체 형식

Nullable 값 형식

null을 허용하지 않는 형식을 T라고 한다면, 이에 대응되는 nullalbe형식 T?가 있다. string?은 string 또는 null값을 보유할 수 있는 형식이다.

튜블 값 형식

참조 형식

클래스 형식

string(UTF-16)

인터페이스 형식

배열 형식

대리자 형식(delegate)

delegate는 대표(자), 위임하다는 의미를 가지고 있다.

메서드에 대한 참조를 나타내는 형식이다. 함수 포인터와 달리 delegate는 객체지향적이며 형식이 안전하다.

System.Action 및 System.Func 는 대리자의 일반적인 정의를 제공한다. 대지라는 함수포인터와 유사하여 이벤트의 기반이 된다. 대리자는 메서드(명명된 것)나 무명 메서드와 연결하여 인스턴스화할 수 있다.

대리자는 메서드나 람다식을 사용하여 인스턴스화해야 한다.

한정자

internal

동일한 어셈블리의 파일 내에서만 액세스할 수 있습니다.

콜렉션

가변크기 컨테이너, Vector, ArrayList, LinkedList, HashSet, Stack, HashMap<key, value>

IEnumerable

foreach, 임의접근이 가능, 내부적으로 Enumerator를 가지고 있다.

IEnumerator

순차접근 가능(MoveNext()), 접근위치를 내부적으로 가지고 있다.

LINQ(Language Integrated Query)

var value = from 익명변수명 in ~

where ...

select 추출할_항목;

라이브러리

CommandLineParser