答案是我自己写的,不知道对不对
1、请写出输出结果(知识点:virtual override)
2
答案:
x=5,y=0
x=6,y=-1
执行过程:
B b=new B();
先调用A的构造函数,
再调用A构造函数中虚方法PrintFields(),
调用重写方法PrintFields();
x=5,y=0;
再调用B的构造函数,此时y=-1;
b.PrintFields();
5+=1;
x=6,y=-1;
3、考察 引用类型 值类型 及字符串
答案:10 21 0 str sting being converted
public class A
{
private string str = "Class1.str";
private int i = 0;
public static void StringConvert(string str)
{
str = "string being converted";
}
public static void StringConvert(A c)
{
c.str = "string being converted";
}
static void Add(int i)
{
i++;
}
static void AddWithRef(ref int i)
{
i++;
}
static void Main(string[] args)
{
int i1 = 10;
int i2 = 20;
string str = "str";
A c = new A();
Add(i1);
AddWithRef(ref i2);
Add(c.i);
//由于string类型的不变性,函数内部会创建一块新的内存来存放形参str,不会改变实参str,外部打印的是实参str,所以答案为“str”
StringConvert(str);
StringConvert(c);
Console.WriteLine(i1);
Console.WriteLine(i2);
Console.WriteLine(c.i);
Console.WriteLine(str);
Console.WriteLine(c.str);
Console.ReadLine();
}
}