1、下面输出什么?
public class A
{
public virtual void Show() { Console.WriteLine("我是基本A"); }
}
public class B : A
{
public override void Show() { Console.WriteLine("我是子类B"); }
}
class Program
{
static void Main(string[] args)
{
//1.0
A a = new A();
a.Show();
Console.WriteLine("-------");
//2.0
B b = new B();
b.Show();
Console.WriteLine("-------");
//3.0
A ab = new B();
ab.Show();
Console.WriteLine("-------");
//4.0
B ba = new A();
ba.Show();
Console.WriteLine("-------");
//5.0
B baa = (B)new A();
baa.Show();
Console.WriteLine("-------");
Console.ReadKey();
}
}
解答:
- 首先4.0 是编译不过,缺少隐式转换,这种操作本来就是错误的
- 运行时5.0抛出异常,无法将A转换成B
- 1.0 print A ,2.0 print B,3.0 print B
2、将一个整数倒放到一个整数数组中,12345,输出 【5,4,3,2,1】
A: 0
B: number % 10
C: rs[i]
D: number / 10
F: number
class Program
{
static void Main(string[] args)
{
int[] rs = new int[5];
var rel = Revert(rs, 12345);
foreach (var i in rel)
{
Console.WriteLine(i);
}
Console.ReadKey();
}
static int[] Revert(int[] rs, int number)
{
int[] result = new int[number.ToString().Length];
Revert(rs, `____1___` , number, ref result);
return result;
}
static void Revert(int[] rs, int i, int number, ref int[] result)
{
if (i < rs.Length)
{
rs[i] = `___2____`;
result[i] = `___3____`;
number = `___4____`;
Revert(rs, `___5____`, `___6____`, ref result);
}
else
{
return;
}
}
}
顺序填入即为正确答案