주말이 심심한 분들....

C# 문제입니다.
IDE 도움 없이, 재미로 한 번 풀어 보세요. ^^.
(아시는 분도 계시겠지만, 제가 지어낸 문제 아닙니다. 참고로 저는 다 틀렸습니다.)

  1. 매개 변수 f에 값을 전달하는 모든 가능한 방법을 기술하시오. (5개 이상)
void Do(Func<int, int> f) 
{ 
   _ = f(3); 
}
  1. 아래의 코드 부분 중, 안되는 것을 고르고, 그 이유를 설명하시오.
// #1
S s = new();
lock(s) 
{
}

// #2
struct S 
{
    public virtual void F() { }
}

// #3
struct T : S { }
  1. 아래의 코드의 결과를 예측하고 그 이유를 설명하시오.
//Program.cs

int x = 5;
new Derived().F(x);

class Base
{
    public void F(int x) => Console.WriteLine("Base.F is called");
}

class Derived : Base
{
   public void F(double x) => Console.WrtieLine("Derived.F is called");
}
4개의 좋아요

읽은 횟수 확인 용.

4개의 좋아요

재미있군요

숨김
  1. delegate, lambda, method
  2. lock은 참조형식만 됨, struct은 상속 안됨
  3. “Derived.F is called”
3개의 좋아요

숨김 <= 어떻게 하는 건가요?

2개의 좋아요
요약

이 텍스트는 숨겨집니다.

2개의 좋아요

생각하게 만드는 재미있는 문제네요!!

혹시 3번 문제의 의도를 알 수 있을까요?

3개의 좋아요

정답을 미리 본 경험으로는, C# 다형성의 선택 방식이 C++/자바와 어떻게 다른 지를 묻는 것이더군요.

2개의 좋아요

Base 클래스와 Derived 클래스가 상속으로 연관 관계에 있어야 문제가 의미 있을 것 같은데 혹시 아닌가 해서요 ㅎㅎ

3개의 좋아요

맞네요 수정했습니다.

3개의 좋아요