Tuesday, June 12, 2007

C# quiz #2: objects, strings, null

this is a continuation from the previous quiz; given this class definition:

public class Foo {
    public void Bar(object x) {
        Console.WriteLine("object x was called");
    public void Bar(string x) {
        Console.WriteLine("string x was called");

what will be output to the console with the following code:

Foo f = new Foo();
try {
catch {
    Console.WriteLine("no method was called");

Extra points for explaining why


Steven said...

Hmmm.... this puzzles me. This time my first hunch was actually wrong. This code compiles.
I've read the C# language specification to find out what is going on here. I suppose it has something to do with the 'Better conversion' ( section of the specs, but I can't figure it out. It seems to me that neither conversion (null to object and null to string) is better, so a compile time error should be generated.

I suppose I misread the specs.

Nandu said...

Can u post the explanation?