... | ... | @@ -535,6 +535,52 @@ class MultiAwaitTest |
|
|
그냥 Random() 메서드가 발생시키는 난수는 항상 규칙적이다. 이를 의사 난수(pseudo-random number) 라고 한다. 의사 난수는 seed 값에 따라서 결과값이 달라지는데, 이 seed 값이 같으면 매번 같은 결과값이 나온다. 그래서 보통 seed 값에 시간을 넣어 Random() 결과가 시간의 흐름에 따라 계속해서 다르게 출력되는 식으로 이용한다. 이와 같은 방법으로 우리가 흔히 생각하는 의미(실행 할 때마다 값이 다르게 나오는)의 난수를 구현한다.
|
|
|
|
|
|
6. 람다식의 변수 스코프는?
|
|
|
람다 식은 람다 함수를 정의하는 메서드 범위 내에 있거나 람다 식을 포함하는 형식 범위 내에 있는 외부 변수를 참조할 수 있습니다. (MSDN)
|
|
|
|
|
|
```c#
|
|
|
class LambdaScope
|
|
|
{
|
|
|
delegate bool D();
|
|
|
delegate bool D2(int i);
|
|
|
|
|
|
D del;
|
|
|
D2 del2;
|
|
|
|
|
|
public void TestMethod(int input)
|
|
|
{
|
|
|
int j = 0;
|
|
|
|
|
|
//람다식 외부의 변수인 j에 접근이 가능하다.
|
|
|
del = () => { j = 10; return j > input; };
|
|
|
|
|
|
del2 = (x) => { return x == j; };
|
|
|
|
|
|
//del이 호출되지 않아서 여전히 j = 0이므로 False 출력.
|
|
|
Console.WriteLine("del호출 전 del2 리턴값 : " + del2(10));
|
|
|
|
|
|
//del이 호출되지 않았으므로 j = 0이다.
|
|
|
Console.WriteLine("j = {0}", j);
|
|
|
|
|
|
//del이 호출되면서 j = 10이 들어간다.
|
|
|
bool boolResult = del();
|
|
|
|
|
|
//j = 10, b = True가 출력된다.
|
|
|
Console.WriteLine("j = {0}, b = {1}", j, boolResult);
|
|
|
}
|
|
|
public static void Main()
|
|
|
{
|
|
|
LambdaScope test = new LambdaScope();
|
|
|
test.TestMethod(5);
|
|
|
|
|
|
bool result = test.del2(10);
|
|
|
|
|
|
//True 출력.
|
|
|
Console.WriteLine("del호출 후 del2 리턴값 : " + result);
|
|
|
|
|
|
Console.ReadKey();
|
|
|
}
|
|
|
}
|
|
|
```
|
|
|
|
|
|
|
|
|
7. IEnumerable<T> 변수를 foreach 키워드로 순회하도록 변경 바랍니다.
|
... | ... | |