I have this C# code:
using System;
public class Program
{
public static void Main()
{
int? bar = null;
Foo foo = bar;
Console.WriteLine(foo == null);
Console.WriteLine(foo.Val);
}
}
public class Foo
{
public int Val;
public Foo(int val)
{
Val = val;
}
public static implicit operator Foo(int val)
{
return new Foo(val);
}
}
This is the output, I get a runtime exception, which is understandable:
True
Run-time exception (line 11): Object reference not set to an instance of an object.
Stack Trace:
[System.NullReferenceException: Object reference not set to an instance of an object.]
at Program.Main() :line 11
But I expected this code to never compile at all. How can this code compile when there is no implicit conversion from int?
to neither int
nor Foo
?
Same code on DotNetFiddle: https://dotnetfiddle.net/WpW2gl