Posted on : 27-02-2008 | By :
matteosp | In :
C#, Quiz
Take the following snippet:
public class Foo
{
// add code
public static int MethodOne() { return 0; }
public static string MethodTwo() { return string.Empty; }
}
public class Program
{
public static void Main()
{
try { Foo.MethodOne(); }
catch (Exception ex) { Console.WriteLine(ex.Message); }
try { Foo.MethodTwo(); }
catch (Exception ex) { Console.WriteLine(ex.Message); }
}
}
and add the code necessary (you cannot modify in any way MethodOne and MethodTwo) to make both method invocation throw an exception.
Posted on : 11-04-2007 | By :
matteosp | In :
C#, Quiz
Look at the following snippet:
public class Foo
{
protected Foo() {}
}
public class Var : Foo
{
Var(): base() {}
void Main()
{
Foo foo = new Foo();
}
}
Now tell me if it can be successfully compiled:
- both in 1.1 and 2.0
- only in 1.1
- only in 2.0
- neither in 1.1 nor in 2.0
Modify this apparently thread-safe event raiser in such a way it becomes truly thread-safe without changing signature nor implementation.
protected void OnMyEvent(MyEventArg e)
{
MyEventHandler handler = MyEvent;
if (handler != null)
handler (this, e);
}
Inspired by this post by Pierre Greborio.
This is my first quiz, and is the result of a beatiful and long chat with my good friend Adrian Florea. Here the Italian version on his blog.
Look at this snippet:
struct Foo
{
public static implicit operator bool(Foo value)
{
return value != null;
}
}
static void Main(string[] args)
{
if (new Foo())
{
Console.WriteLine("Hello word!");
}
}
What will you get? And, first of all, why?
a) nothing
b) “Hello word!”
c) a compiler error
d) a runtime error
8