C#智力测验
能正确回答以下问题的,就可以在任何C#面试笔试题面前所向披靡。当然,这比C++的变态题目要简单得多。想知道正确答案,只要编译运行一下即可。祝君好运。
1. 以下代码有什么问题?
public class B
{
protected virtual void F() { Console.WriteLine("B"); }
}
public class D : B
{
protected override void F() { Console.WriteLine("D"); }
public void G(B b)
{
b.F();
}
static void Main()
{
D d = new D();
d.G(d);
}
}
2. 以下代码有什么效果?
interface IIncrementable
{
void Increment();
}
struct QuadWord : IIncrementable
{
long value;
public void Increment() { value++; }
public static implicit operator long(QuadWord q) { return q.value; }
}
static class Program
{
static void F(IIncrementable inc, int count)
{
for (int i = 0; i < count; i++)
inc.Increment();
}
static void Main()
{
QuadWord q = new QuadWord();
F(q, 100);
Console.WriteLine(q);
}
}
3. 以下代码有什么效果?
class C1
{
public static readonly int a = (int)Math.Round(Math.PI);
public static readonly int b = C2.a;
}
class C2
{
public static readonly int a = C1.a;
}
class Program
{
static void Main()
{
Console.WriteLine(C1.b);
}
}