C#.NET — Correct delegate call: Identify the correct way to invoke MyFun() in class Sample. class Sample { public void MyFun(int i, float j) { Console.WriteLine("Welcome to CuriousTab !"); } }

Difficulty: Medium

Correct Answer: delegate void del(int i, float j); del d; Sample s = new Sample(); d = new del(ref s.MyFun); d(10, 1.1f);

Explanation:

Introduction / Context:This tests how to correctly declare and use delegates to invoke a method with specific parameters in C#. Correct signature matching is crucial for delegates to work.

Given Data / Assumptions:

  • Class Sample has method MyFun(int i, float j).
  • We want to call it using a delegate.

Concept / Approach:Delegates must match the method signature exactly. MyFun takes two parameters: int and float. Therefore, the delegate must be declared as delegate void del(int, float).

Step-by-Step Solution:

Option A — Wrong: delegate has only int parameter, but method needs int and float. Option B — Correct: delegate matches method signature and properly instantiates with ref s.MyFun. Option C — Wrong: invalid syntax for delegate instantiation. Option D — Wrong: syntax error in parameter declaration.

Verification / Alternative check:Compile and run with Option B, works correctly, printing the message.

Why Other Options Are Wrong:Mismatched signatures or invalid syntax.

Common Pitfalls:Forgetting that delegate parameters must exactly match target method parameters; confusing declaration and instantiation syntax.

Final Answer:delegate void del(int i, float j); del d; Sample s = new Sample(); d = new del(ref s.MyFun); d(10, 1.1f);

Discussion & Comments

No comments yet. Be the first to comment!
Join Discussion